[英]Python: Tie breaker when sorting a list of tuples (max for first element, and 1st occurrence of the second)
这是我开始的清单
names = ["Alice", "Beatrice", "Amarnae", "Zootrope"]
最后三项各有 4 个元音
根据元音计数创建一个排序列表。 得到了下图
mylist = [(3, 'Alice'), (4, 'Amarnae'), (4, 'Beatrice'), (4, 'Zootrope')]
我需要返回/查找第一次出现的最大数量
print(max(mylist))
返回
(4, 'Zootrope')
问:我需要返回,因为这是原始列表中第一次出现的名称
(4, 'Beatrice')
我尝试了一些不同的东西(包括mylist.sort(key = lambda x: (x[0], x[1])
.. 但似乎不起作用。
您的mylist
不是在最初保留原始项目订单的情况下创建的,因此存在问题。
您可以使用这样的列表理解来创建mylist
:
mylist = [(sum(c in 'aeiou' for c in name.lower()), name) for name in names]
这导致mylist
的以下值,保留原始项目顺序:
[(3, 'Alice'), (4, 'Beatrice'), (4, 'Amarnae'), (4, 'Zootrope')]
由于max
返回具有最大值的第一项,因此您可以简单地将max
与key
function 一起使用,该键仅返回元组中的第一项进行比较,因为您不希望考虑第二项的字典顺序帐户:
max(mylist, key=lambda t: t[0])
返回:
(4, 'Beatrice')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.