Python 3.8中的子排序

2024-06-28 19:41:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试对字典进行两次排序:先按值降序,然后按字母顺序排列键

比如说,

tally = {"hello": 5, "dog": 12, "cat": 1, "bird": 5, "lion": 5}

我想输出一个列表,其中包含每个单词,按降序值排序

output = ["dog", "hello", "bird", "lion", "cat"]

然后在此排序中,按字母顺序对其进行子排序 例如:

final_result = ["dog", "bird", "hello", "lion", "cat"]

我实际上不需要获取列表output,我只需要获取final_result。因此,如果有一种方法可以通过一个步骤来实现,那就更好了。那我该怎么做呢

我尝试使用key = lambda t:t[1]进行初始排序,但结果是生成了一个包含字典中的键和值的元组。这显然不起作用,因为我只想要单词,而且我也不知道如何在其中进行子排序

提前谢谢你的帮助


Tags: hello列表output字典排序字母result单词
1条回答
网友
1楼 · 发布于 2024-06-28 19:41:30

您可以使用自定义key根据这两个条件进行排序。这可以通过指定元组(-value,key)在一个步骤中完成,其中通过采用values的负号,我们得到一个降序排序:

>>> sorted(tally,key=lambda x: (-tally[x],x))
['dog', 'bird', 'hello', 'lion', 'cat']

逻辑(-value,key)^{}给出

相关问题 更多 >