返回元组列表中的最大值

4

如果我有以下嵌套在括号中的列表:

[('Frank', '8'), ('Peter', '10'), ('Spank', '0')]

我该如何从列表中返回最大值及其对应的名称?

期望的输出结果:

('Peter', '10')

我尝试过使用max(list,key = itemgetter(1))[0],但没有成功。


将你的 '8'、'10' 和 '0' 转换为整数。 - user14520680
3个回答

7

只需将关键字段转换为整数

data = [('Frank', '8'), ('Peter', '10'), ('Spank', '0')]
mx = max(data, key=lambda e: int(e[1]))
print(mx)

输出

('Peter', '10')

1
尝试使用此函数。它以与您示例中相同格式的列表作为输入,并返回具有最大数字的元素。
def findMax (names): #names = [('Frank', '8'), ('Peter', '10'), ('Spank', '0')]
numbers = [] #list for storing the numbers
for i in names:
    numbers.append (int (i [1]))

return names [numbers.index (max (numbers))] #search the max value in numbers and print the names element with the same index

0
如果您想使用 operator.itemgetter,您应该将每个元组的第二项转换为 int
>>> from operator import itemgetter
>>> lst = [('Frank', '8'), ('Peter', '10'), ('Spank', '0')]
>>> max(((k, int(v)) for k, v in lst), key=itemgetter(1))
('Peter', 10)

字符串默认按字典顺序进行比较,因此在这种情况下进行 int 转换是必要的。您可以通过执行 '8' > '10' 来测试此功能,并查看它是否返回 True。您可以阅读 文档 以获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接