猿问

在Python中按值和键排序字典?

我有以下字典:

dic = {'s': 3, 'a': 2, 'w': 2, 'y': 2, 'x': 2, 'm': 4, 'd': 5}

我需要先按 VALUE 对元素进行排序,如果值重复,然后按 KEY 排序,我会得到以下输出:

dic = [('d', 5), ('m', 4), ('s', 3), ('a', 2), ('w', 2), ('x', 2), ('y', 2)]

我试过使用这段代码:

sorted(dic.items(), key=lambda x: x[1], reverse=True)

但我一直得到相同的输出(键等于 2 的字母不按字母顺序排列):

[('d', 5), ('m', 4), ('s', 3), ('a', 2), ('w', 2), ('y', 2), ('x', 2)]

有谁知道我该如何解决这个问题?


红颜莎娜
浏览 122回答 3
3回答

萧十郎

您可以使用 key 函数对 dict 项进行排序,该函数返回一个 2 元组,其中 dict 项的否定值作为第一项,键作为第二项:sorted(dic.items(), key=lambda t: (-t[1], t[0]))这将返回:[('d', 5), ('m', 4), ('s', 3), ('a', 2), ('w', 2), ('x', 2), ('y', 2)]

潇湘沐

你快到了,你需要在你的 lambda 排序中包含键和值:sorted(dic.items(), key=lambda x: (-x[1],x[0]))

元芳怎么了

使用这个键的定义key=lambda x: (x[1],x[0])
随时随地看视频慕课网APP

相关分类

Python
我要回答