gpt4 book ai didi

python - 按值排序元组列表,然后按字母顺序排序

转载 作者:太空狗 更新时间:2023-10-30 00:25:23 25 4
gpt4 key购买 nike

有点像 python 新手,但我得到了以下元组列表。我需要按值对其进行排序,如果值相同,则按字母顺序解决关系。这是一个示例:

#original
list_of_medals = [('Sweden', 24), ('Germany', 16), ('Russia', 10), ('Ireland', 10), ('Spain', 9), ('Albania', 8), ('Lithuania', 7), ('Iceland', 6), ('Malta', 5), ('Italy', 5), ('Serbia', 4), ('Estonia', 4), ('Turkey', 4), ('Moldova', 2), ('Azerbaijan', 2)]
# \____/ \_____/ \______/
#after sorting / \ / \ / \
sorted_medals = [('Sweden', 24), ('Germany', 16), ('Ireland', 10), ('Russia', 10), ('Spain', 9), ('Albania', 8), ('Lithuania', 7), ('Iceland', 6), ('Malta', 5), ('Italy', 5), ('Estonia', 4), ('Serbia', 4), ('Turkey', 4), ('Azerbaijan', 2), ('Moldova', 2)]

operator 模块是否可能?

最佳答案

在这种情况下,我将使用 lambda 函数作为 sort()/sorted()key 参数:

In [59]: sorted(list_of_medals, key=lambda x:(-x[1],x[0]))
Out[59]:
[('Sweden', 24),
('Germany', 16),
('Ireland', 10),
('Russia', 10),
('Spain', 9),
('Albania', 8),
('Lithuania', 7),
('Iceland', 6),
('Italy', 5),
('Malta', 5),
('Estonia', 4),
('Serbia', 4),
('Turkey', 4),
('Azerbaijan', 2),
('Moldova', 2)]

x[1] 的否定需要按降序顺序对奖牌进行排序,而按升序顺序对国家名称进行排序(只需设置reverse=True 不会实现这一点)。

正如一些人在评论中指出的那样,对复合键进行复杂排序的一种更通用的方法是执行多个排序步骤。为此,一次对一个组件进行排序,从最不重要的组件开始:

In [67]: temp = sorted(list_of_medals, key=itemgetter(0))

In [68]: sorted(temp, key=itemgetter(1), reverse=True)
Out[68]:
[('Sweden', 24),
('Germany', 16),
('Ireland', 10),
('Russia', 10),
...

这依赖于 Python 的排序是稳定的,这意味着比较相等的项目永远不会重新排序。

关于python - 按值排序元组列表,然后按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13482313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com