1

辞書があるとしましょう

foo = {'b': 1,  'c':2,  'a':3 }

このディクショナリを、ディクショナリ内のアイテムの出現順に繰り返し処理したいと考えています。

for k,v in foo.items():
    print k, v

版画

a 3
c 2
b 1

sorted() 関数を使用する場合:

for k,v in sorted(foo.items()):
    print k, v

版画

a 3
b 1
c 2

しかし、辞書に表示される順序でそれらが必要です。

b 1
c 2
a 3

どうすればこれを達成できますか?

4

7 に答える 7

2

OrderedDict を複数回使用したい場合は、人々が言っ​​たように OrderedDict を使用してください。:) 1 回限りのワンライナーが必要な場合は、並べ替え関数を変更します。

sorted(foo.items(), lambda a,b:a[1]-b[1])
于 2013-07-17T18:21:49.280 に答える
2

ワンライナーでこれを行うことができます:

>>> sorted(foo.items(), key=lambda x: x[1])
[('b', 1), ('c', 2), ('a', 3)]
于 2013-07-17T18:27:06.213 に答える
1

これをより直接的に見ると、辞書の作成に使用した順序は辞書の順序ではありません。順番は不定です。

>>> {'b': 1,  'c':2,  'a':3 }
{'a': 3, 'c': 2, 'b': 1}
于 2013-07-17T18:16:02.240 に答える