爲什麼Python中的字典似乎顛倒了?爲什麼字典似乎被顛倒?
>>> a = {'one': '1', 'two': '2', 'three': '3', 'four': '4'}
>>> a
{'four': '4', 'three': '3', 'two': '2', 'one': '1'}
我該如何解決這個問題?
爲什麼Python中的字典似乎顛倒了?爲什麼字典似乎被顛倒?
>>> a = {'one': '1', 'two': '2', 'three': '3', 'four': '4'}
>>> a
{'four': '4', 'three': '3', 'two': '2', 'one': '1'}
我該如何解決這個問題?
Python中的字典(以及一般的哈希表)是無序的。在Python中,您可以使用鍵上的sort()
方法對它們進行排序。
好吧,我將使用鍵/值 – myfreeweb 2010-02-18 19:44:58
你會期待什麼是「標準訂單」?它非常依賴於應用程序。一個python字典並不能保證密鑰排序。
在任何情況下,您都可以按照您想要的方式迭代字典keys()。
詞典沒有固有的順序。你必須要麼滾動你自己的命令字典執行,使用ordered list
of tuple
s或使用existing ordereddict
implementation。
現在你知道類型的字典是無序的,這裏是如何將它們轉換爲您可以爲了
>>> a = {'one': '1', 'two': '2', 'three': '3', 'four': '4'}
>>> a
{'four': '4', 'three': '3', 'two': '2', 'one': '1'}
通過關鍵
>>> sorted(a.items())
[('four', '4'), ('one', '1'), ('three', '3'), ('two', '2')]
分類排序由值列表
>>> from operator import itemgetter
>>> sorted(a.items(),key=itemgetter(1))
[('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')]
>>>
最好是認爲字典作爲 一組無序的鍵:值對
而且從Python Standard Library(約dict.items):
CPython實現細節:鍵 和值以任意 的順序列出,它是非隨機的,變化爲跨Python實現的和 取決於字典的 插入和刪除的歷史記錄。
所以,如果你需要處理的一定順序的字典,排序鍵或值,例如:
>>> sorted(a.keys())
['four', 'one', 'three', 'two']
>>> sorted(a.values())
['1', '2', '3', '4']
Python3.1有OrderedDict
>>> from collections import OrderedDict
>>> o=OrderedDict([('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')])
>>> o
OrderedDict([('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')])
>>> for k,v in o.items():
... print (k,v)
...
one 1
two 2
three 3
four 4
太棒了。但是我沒有對Python 2進行排序。 – myfreeweb 2010-02-19 12:54:32
Orderedicts中的項目按項目添加到詞典時排序,而不是按鍵或項目。所以,如果你不按順序添加項目 - OrderedDict不會幫助:-) – 2014-09-22 12:30:06
「修復」是什麼意思?你會喜歡什麼樣的順序? – 2010-02-18 20:31:04