如果我有以下嵌套在括号中的列表:
[('Frank', '8'), ('Peter', '10'), ('Spank', '0')]
我该如何从列表中返回最大值及其对应的名称?
期望的输出结果:
('Peter', '10')
我尝试过使用max(list,key = itemgetter(1))[0]
,但没有成功。
只需将关键字段转换为整数
data = [('Frank', '8'), ('Peter', '10'), ('Spank', '0')]
mx = max(data, key=lambda e: int(e[1]))
print(mx)
输出
('Peter', '10')
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
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
。您可以阅读 文档 以获取更多信息。