Ordered Dict:
import collections
d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
collections.OrderedDict(sorted(d.items(), key=lambda t: t[0]))
上面的例子展示了如何订购dict,这本质上是不受支持的。但是,如何保留初始订单而不是按键或值进行排序?
答案 0 :(得分:4)
为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)])
答案 1 :(得分:1)
一旦您使用您的商品初始化常规字典,订单就会消失。所以只需按初始顺序初始化 ordered dict:
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
答案 2 :(得分:1)
定义dict
时,sort
上没有订单。dict
list
实际上没有对dict进行排序。它正在对包含tuples
的{{1}}进行排序(key, value)
对{/ p>
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)]
这是sorted
的{{1}}列表。tuples
正在返回元组的key = lambda t: t[0]
元素。根据2nd
2nd
元素进行排序
tuple
即订单消失。为了维持秩序,请使用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