【发布时间】:2014-08-31 22:49:02
【问题描述】:
假设我有一本像这样的字典:
h=[('a',5), ('f', 3), ('b',3), ('c',3), ('d',1), ('e',4) ]
我希望它排序为:
[('a',5), ('e',4), ('b',3), ('c',3), ('f',3), ('d',1)]
我可以用 Python 2 解决这个问题:
sortedList= sorted(h.iteritems(),key=lambda(k,v):(-v,k))
我可以通过以下方式在 Python 3 中非常接近:
import operator
sortedList =sorted(h.items(), key=operator.itemgetter(1,0) , reverse=True)
但结果是这样的
[('a',5), ('e',4), ('f',3), ('c',3), ('b',3), ('d',1)]
我怎样才能扭转决胜局操作?
【问题讨论】:
-
在 py3 中唯一不允许的是在 lambda 中解包。
lambda x: (-x[1], x[0])适用于两个版本。 -
Python 的排序是稳定的 - 所以你可以排序两次
-
h 是一个列表,所以你不能在 python 3 中使用 h.items()
标签: python sorting dictionary