Python 从列表中的列表中获取具有最大值的对

Python 从列表中的列表中获取具有最大值的对,python,list,Python,List,我有一个列表l1,其中包含多个列表,其中包含一个带数字的字母。 对于每一个字母,我想得到一对数字最高的字母 l1 = [['A', 4.54], ['A', 1.23], ['B', 1.23], ['A', 9.23], ['B', 6.23], ['C', 10.55]] 这就是我想要的: l2 =[['A', 9.23], ['B', 6.23], ['C', 10.55]] 我似乎无法解决这个问题。 有什么建议吗?只需使用dict对结果进行分组: >>> resul

我有一个列表
l1
,其中包含多个列表,其中包含一个带数字的字母。 对于每一个字母,我想得到一对数字最高的字母

l1 = [['A', 4.54], ['A', 1.23], ['B', 1.23], ['A', 9.23], ['B', 6.23], ['C', 10.55]]
这就是我想要的:

l2 =[['A', 9.23], ['B', 6.23], ['C', 10.55]]
我似乎无法解决这个问题。
有什么建议吗?

只需使用
dict
对结果进行分组:

>>> result = {}
>>> for letter, number in l1:
...     result[letter] = max(number, result.get(letter, number))
...
>>> result
{'A': 9.23, 'B': 6.23, 'C': 10.55}
如果必须有
列表
,请使用:

>>> list(result.items())
[('A', 9.23), ('B', 6.23), ('C', 10.55)]
本机python:

l1 = [['A', 4.54], ['A', 1.23], ['B', 1.23], ['A', 9.23], ['B', 6.23], ['C', 10.55], ['C', 3.0]]

nl = sorted(l1)
result = list(dict(nl).items())


print(result)

您也可以使用itertools进行此操作,首先按字母对列表进行排序,然后获得每组的最大值

from itertools import groupby

l1 = [['A', 4.54], ['A', 1.23], ['B', 1.23], ['A', 9.23], ['B', 6.23], ['C', 10.55]]

l1 = sorted(l1, key=lambda x: x[0])
result = [max(v, key=lambda x: x[1]) for _, v in groupby(l1, key=lambda x: x[0])]
print(result)
您可以使用
number
本身,而不是
float('-inf')
。这样可以将解决方案推广到其他类型,如字符串等。