這是一個有點難受,言傳,所以我將展示一個例子:創建列表類型的值從字典OrderedDict(列表中的值的順序)
我有什麼(data
是一個字典實例):
data = {'a':[4,5,3], 'b':[1,0,2], 'c':[6,7,8]}
我需要什麼(ordered_data
是OrderedDict實例):
ordered_data = {'b':[0,1,2], 'a':[3,4,5], 'b':[6,7,8]}
鍵的順序應該相對於在列表嵌套
這是一個有點難受,言傳,所以我將展示一個例子:創建列表類型的值從字典OrderedDict(列表中的值的順序)
我有什麼(data
是一個字典實例):
data = {'a':[4,5,3], 'b':[1,0,2], 'c':[6,7,8]}
我需要什麼(ordered_data
是OrderedDict實例):
ordered_data = {'b':[0,1,2], 'a':[3,4,5], 'b':[6,7,8]}
鍵的順序應該相對於在列表嵌套
tmp = {k:sorted(v) for k,v in data.items()}
ordered_data = OrderedDict((k,v) for k,v in sorted(tmp.items(), key=lambda i: i[1]))
首先排序的值改爲項目的順序。如果你不需要原始的data
,可以做到這一點,但我做了一個臨時變量。
key
是返回要排序的鍵的函數。在這種情況下,鍵是項目元組的第二個元素(列表),並且由於列表是可比較的,所以這已經足夠了。
@ inspectorG4dget,它將在2或3中工作。'sorted'需要迭代。 – jpkotta
你是對的!我的錯 – inspectorG4dget
通常情況下,你不應該擔心在字典本身的數據順序,相反,僅僅指剛爲了它,當您檢索字典的內容(即:迭代它):
data = {'a':[4,5,3], 'b':[1,0,2], 'c':[6,7,8]}
for datum in sorted(data.items(), key=lambda item: item[1]):
...
您可以使用OrderedDict
通過排序您的項目和值:
>>> from operator import itemgetter
>>> from collections import OrderedDict
>>> d = OrderedDict(sorted([(k, sorted(v)) for k, v in data.items()], key=itemgetter(1)))
>>> d
OrderedDict([('b', [0, 1, 2]), ('a', [3, 4, 5]), ('c', [6, 7, 8])])
應該'ordered_data = {'b':[0,1,2],'a':[3,4,5],'b':[6, 7,8]}'''ordered_data = {'b':[0,1,2],'a':[3,4,5],'c':[6,7,8]}' – depperm