Python 在嵌套列表中查找最大值
我有以下脚本:Python 在嵌套列表中查找最大值,python,python-3.x,Python,Python 3.x,我有以下脚本: data = [['A', 4], ['B', 12], ['C', 20], ['D', 38], ['E', 88], ['F', 88]] print(max(data, key=lambda x: x[1])) 我只将其作为输出['E',88]。我怎样才能得到['E',88],'F',88],因为两者都有相同的最高值?您可以: data = [['A', 4], ['B', 12], ['C', 20
data = [['A', 4], ['B', 12],
['C', 20], ['D', 38],
['E', 88], ['F', 88]]
print(max(data, key=lambda x: x[1]))
我只将其作为输出['E',88]
。我怎样才能得到['E',88],'F',88]
,因为两者都有相同的最高值?您可以:
data = [['A', 4], ['B', 12],
['C', 20], ['D', 38],
['E', 88], ['F', 88]]
lookup = {}
for pair in data:
lookup.setdefault(pair[1], []).append(pair)
max_key = max(lookup)
print(lookup[max_key])
输出
[['E', 88], ['F', 88]]
函数执行以下操作(来自文档):
如果键在字典中,则返回其值。如果不是,请插入带有
默认值和返回默认值。默认值为“无”
mx=max(数据,key=lambda x:x[1])[1];mx_值=[[l,v]表示数据中的l,v,如果v==mx];打印(mx_值)#['E',88],'F',88]
@azro最大值=[couple for couple in data if couple[1]==mx]
以便结果始终与基础数据在同一个容器中,而不必指定它是一个列表(您的[l,v]
)@Guimoute是azro的解决方案错了吗?@user977828不,它有效,但是,如果您将数据更改为包含元组(数据=[('A',4),(B',12),…])
,azro方法返回的值将是列表而不是元组。在我的解决方案中,不需要使用key with max参数max(查找)将位于字典的键上