按值排序字典,然后按键字母顺序排序 Python3

4 投票
1 回答
4308 浏览
提问于 2025-04-19 03:17

假设我有一个字典,内容是这样的:

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

撰写回答