主要思想是从这里复制过来的。
from collections import OrderedDict
diction = {"Book":(1, 2), "Armchair":(2, 2), "Lamp":(1, 3)}
diction_list = list(diction.items())
diction = OrderedDict(sorted(diction_list, key=lambda x: (-x[1][1], x[0])))
print(diction)
OrderedDict([('Lamp', (1, 3)), ('Armchair', (2, 2)), ('Book', (1, 2))])
这是魔术发生的地方:
sorted(diction_list, key=lambda x: (-x[1][1], x[0]))
sorted
为你整理东西。它非常擅长。如果将key
参数与 sort 一起使用,则可以给它一个函数,用于每个要排序的项目。在这种情况下,我们给出 alambda
从元组中返回负值-x[1][1]
(这是元组中的第二个值)和键x[0]
。负号使其反向排序。当然,这不适用于非数字值。
这OrderedDict
不是绝对必要的。Python 在我认为的 3.6 版(或者是 3.7 版?)之后保持 dict 的顺序。OrderedDicts 总是保持相同的顺序,所以它就在那里,所以我们的 dict 保持有序,独立于 Python 版本。
有关执行此操作的更好方法,请参阅Python 文档中的排序方法。