【发布时间】:2021-02-24 22:42:52
【问题描述】:
我有以下脚本:
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],因为两者的最高值相同?
【问题讨论】:
-
mx = max(data, key=lambda x: x[1])[1]; mx_values = [[l, v] for l, v in data if v == mx]; print(mx_values) # [['E', 88], ['F', 88]] -
@azro
max_values = [couple for couple in data if couple[1] == mx]以便结果始终与基本数据位于同一容器中,而无需指定它是一个列表(您的[l, v])。 -
@Guimute azro的解决方案错了吗?
-
@user977828 不可以,但是如果您将
data更改为包含元组 (data = [('A', 4), (B', 12), ...]),则 azro 方法返回的值将是列表而不是元组。
标签: python python-3.x