有点像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
模块是否可能?
您可以使用
sorted
函数:在这个例子中,我使用lambda函数作为
key
参数来sort()
/sorted()
:当按升序对国家名称进行排序时,需要对
x[1]
进行否定,才能按^{降序对奖牌进行排序(仅仅设置reverse=True
并不能实现这一点)。正如一些人在评论中指出的那样,对复合键进行复杂排序的一种更通用的方法是执行几个排序步骤。为此,请一次对一个组件进行排序,从最不重要的组件开始:
这依赖于Python的排序是稳定的,这意味着比较相等的项永远不会重新排序。
相关问题 更多 >
编程相关推荐