[英]Ordered Dict, preserve initial Order
有序字典:
import collections
d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
collections.OrderedDict(sorted(d.items(), key=lambda t: t[0]))
上面的示例顯示了如何訂購自然不受支持的字典。 但是,如何保留初始順序,而不是按鍵或值排序?
最初的順序被保存為OrderedDict
,所以只是把它直並繞過正常的字典:
>>> from collections import OrderedDict
>>> od = OrderedDict([('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)])
>>> od
OrderedDict([('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)])
用商品初始化常規字典后,訂單就消失了。 因此,只需按初始順序初始化有序字典即可:
import collections as co
co.OrderedDict([(a, b) for a, b in list_of_pairs])
# or
d = co.OrderedDict()
for a, b in list_of_pairs:
d[a] = b
在定義時,常規dict
已經沒有命令。 對dict
sort
實際上不是對dict
排序,而是對包含(key, value)
對的tuples
的list
排序。
d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
s = sorted(d.items(), key=lambda t: t[0])
>>>s
[('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)]
這是tuples
sorted
列表。 key = lambda t: t[0]
返回tuple
2nd
元素。因此,基於tuple
2nd
元素進行排序
new_d = dict(s)
>>>new_d.items()
[('orange', 2), ('pear', 1), ('apple', 4), ('banana', 3)]
那就是訂單消失。為了維護訂單,使用了OrderedDict
。
例如
>>>OrderedDict({"a":5})
OrderedDict([('a', 5)])
這也在維護list of tuples
。
所以你必須pass
一個排序list of tuple
>>>OrderedDict([('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)])
OrderedDict([('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.