0

私は次のような辞書を持っています

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

ディクショナリを値でソートするためにディクショナリで使用できるメソッドはありません。を使用して並べ替えました

>>> sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))
>>> sorted_x
[('c', 1), ('a', 2), ('b', 3)]

しかし今、私がsorted_xループを使って再び辞書に変換するとき。お気に入り

>>> new_dict = {}
>>> for i in sorted_x:
    new_dict[i[0]] = i[1]
>>> new_dict
{'a': 2, 'c': 1, 'b': 3}

new_dict再び未分類のままです。Python辞書をキーで並べ替えることができないのはなぜですか?誰もがそれに光を当てることができますか。

4

2 に答える 2

3

辞書は分類されていません。これらは、キーと値の間の単なるマッピングです。

ソートされた辞書が必要な場合は、次を使用しますcollections.OrderedDict

>>> import collections
>>> d = collections.OrderedDict(sorted_x)
>>> d
    OrderedDict([('c', 1), ('a', 2), ('b', 3)])
>>> d['c']
    1
于 2013-02-10T10:05:44.360 に答える
2

Pythonの辞書はハッシュマップです。要素への高速アクセスを維持するために、キーはハッシュされます。

つまり、要素は、指定する順序ではなく、生成するハッシュに応じて内部的に順序付けする必要があります。

于 2013-02-10T10:07:32.330 に答える