如何根据排序的键将字典中的键、值对放在适当的位置?

2024-05-31 07:27:52 发布

您现在位置:Python中文网/ 问答频道 /正文

<>我在C++中寻找一些类似map的东西。我知道普通python dict不支持order。我在收藏品里发现了有序的信息。但它并不像预期的那样有效。在

>>> odict = OrderedDict()
>>> odict['z'] = '1'
>>> odict['a'] = '2'
>>> odict['y'] = '3'
>>> print(odict)
OrderedDict([('z', '1'), ('a', '2'), ('y', '3')])

但我希望有秩序,像这样:

^{pr2}$

Tags: 信息maporder秩序dict收藏品ordereddictprint
3条回答

Ordered dict以更新的方式记住顺序
可以使用sorted进行排序:

>>> 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)]

如果要按值排序:

^{pr2}$

你不能对一个有序的dict重新排序,顺序是在添加数据时确定的。但你可以在原有的基础上再做一个新的:

odict = OrderedDict([('z', 1), ('a', 2), ('y', 3)])
odict_sorted = OrderedDict(sorted(odict.iteritems()))

# gives OrderedDict([('a', 2), ('y', 3), ('z', 1)])

collections.OrderedDict记住项目的插入顺序。您正在寻找一个类似于sorteddict的东西,它是blist third party package的一部分。。。在

另一种方法是在将键打包到OrderedDict之前对键进行排序,但是如果需要添加更多项,则可能会取消排序。。。在

相关问题 更多 >