按值排序字典,然后按键字母顺序排序 Python3
假设我有一个字典,内容是这样的:
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)]
我该如何反转这个平局处理的操作呢?
1 个回答
5
你可以在Python 3中使用这个调用来进行排序:
sortedList = sorted(h, key=lambda k: (-k[1], k[0]))
这样做的结果和Python 2中的排序是一样的:
[('a',5), ('e',4), ('b',3), ('c',3), ('f',3), ('d',1)]