我在C ++中寻找类似map的东西。我知道普通的python dict不支持订单。我在馆藏中找到了有序的。但它不能按预期工作。
>>> odict = OrderedDict()
>>> odict['z'] = '1'
>>> odict['a'] = '2'
>>> odict['y'] = '3'
>>> print(odict)
OrderedDict([('z', '1'), ('a', '2'), ('y', '3')])
但我想订购,就像这样:
OrderedDict([('a', '2'), ('y', '3'), ('z', '1')])
答案 0 :(得分:2)
collections.OrderedDict
会记住商品插入订单。您正在寻找类似于sorteddict ...
另一种方法是在之前对键进行排序,然后将它们打包到OrderedDict
中,但如果你需要添加更多的项目,事情可能会变得无法排序......
答案 1 :(得分:1)
Ordered dict以更新方式记住订单 你可以使用sort来排序:
>>> my_dict = {'a': 1, 'c': 3, 'b': 4}
>>> [x for x in sorted(a.items(),key=lambda x:x[0])] # sorted on keys
[('a', 1), ('b', 4), ('c', 3)]
如果要对值进行排序:
>>> [x for x in sorted(a.items(),key=lambda x:x[1])]
[('a', 1), ('c', 3), ('b', 4)]
答案 2 :(得分:0)
您无法对订购的dict重新排序,订单会在添加数据时确定。但是你可以根据原作创建一个新的:
odict = OrderedDict([('z', 1), ('a', 2), ('y', 3)])
odict_sorted = OrderedDict(sorted(odict.iteritems()))
# gives OrderedDict([('a', 2), ('y', 3), ('z', 1)])