0

私は辞書を持っています:

a = {"w1": "wer", "w2": "qaz", "w3": "edc"}

その値を印刷しようとすると、右から左に印刷されます。

>>> for item in a.values():
    print item,


edc qaz wer

左から右に印刷したい:

wer qaz edc

どうすればいいですか?

4

5 に答える 5

9

できません。辞書には使用できる順序がないため、辞書リテラルに関して「左から右」という概念はありません。並べ替えを決定し、それに固執します。

于 2012-05-20T16:25:22.360 に答える
4

collections.OrderedDict(python 2.7以降-Python2.4以降(私は思う)にこの機能を提供するActiveStateレシピがどこかにあります)を使用してアイテムを保存できます。もちろん、アイテムを適切な順序で辞書に挿入する必要があります({}構文は機能しなくなります。また、他の人が述べているように、これらは通常の辞書に依存しているため、key=valueをコンストラクターに渡しません。順序の概念なし)

于 2012-05-20T16:49:44.847 に答える
3

キーのアルファベット順でそれらが必要であると仮定すると、次のようなことができます。

a = {"w1": "wer", "w2": "qaz", "w3": "edc"}  # your dictionary

keylist = a.keys()   # list of keys, in this case ["w3", "w2", "w1"]
keylist.sort()       # sort alphabetically in place, 
                     #  changing keylist to ["w1", "w2", w3"]

for key in keylist:
    print a[key]     # access dictionary in order of sorted keys
于 2012-05-20T16:36:22.467 に答える
0

@IgnacioVazquez-Abramsが述べたように、これは辞書のようなものではありませんが、http://pypi.python.org/pypi/odict順序付けられたdictをorder使用して同様の効果を達成できます。odict

詳細な議論とodictパッチについては、PEP372チェックしてください。

于 2012-05-20T16:36:31.867 に答える
0

辞書はハッシュ値を使用して値を関連付けます。辞書をソートする唯一の方法は、次のようになります。

dict = {}
x = [x for x in dict]
# sort here
y = []
for z in x: y.append(dict[z])

私はしばらく Python で実際の作業を行っていないので、少しさびているかもしれません。間違っている場合は修正してください。

于 2012-05-20T19:05:36.150 に答える