我有一个由(名称,值)对组成的python字典
pyDictionary = {"Bob":12,"Mellissa":12,"roger":13}
我想做的是获得上述字典的排序版本,在该排序中,首先给出该值的真值,然后进行排序,如果两对值相同,则应通过字典比较进行比较名字。
我如何在python3.7中做到这一点?
答案 0 :(得分:6)
您可以将sorted
与key
一起使用,并根据结果构建一个OrderedDict
以保持顺序。
(最后一步仅在python 3.6 <
中是必需的,在python 3.7中,字典按其键插入时间排序)
from collections import OrderedDict
d = {"Mellissa":12, "roger":13, "Bob":12}
OrderedDict(sorted(d.items(), key=lambda x: (x[1], x[0])))
# dict(sorted(d.items(), key=lambda x: (x[1], x[0]))) # for Python 3.7
# [('Bob', 12), ('Mellissa', 12), ('roger', 13)]
或者您也可以使用operator.itemgetter
直接从每个元组分别获取value
和key
:
OrderedDict(sorted(d.items(), key=itemgetter(1,0)))
# dict(sorted(d.items(), key=itemgetter(1,0))) # python 3.7
# [('Bob', 12), ('Mellissa', 12), ('roger', 13)]
答案 1 :(得分:1)
您可以使用可反转键值元组顺序的键功能对字典项进行排序:
dict(sorted(pyDictionary.items(), key=lambda t: t[::-1]))