python – 根据字符串和值从嵌套列表中删除重复项

我有一个这样的列表:

[['john', 14, 'USA'],['john', 27, 'USA'],['paul', 17, 'USA'],['paul', 36, 'USA']]

并需要得到输出:

[['john', 27, 'USA'],['paul', 36, 'USA']]

这意味着删除基于位置0的重复项,但保留位置1中具有较高值的​​重复项.

我知道如何使用set()删除常规列表上的重复项,但是如何应用这两个条件呢?我正在考虑使用for,但我可能会非常慢,因为我将使用的真实列表非常大.

我已经尝试仅通过名称删除重复项,但我很困惑保持一个具有更高价值的副本.

谢谢!

最佳答案 我喜欢Kasra的解决方案,但jsut提供了另一种方法:

from collections import defaultdict

l=[['john', 14, 'USA'], ['john', 27, 'USA'], ['paul', 17, 'USA'], ['paul', 36, 'USA']]
key=defaultdict(list)
for n,a,c in l:
    key[(n,c)].append(a)
f_list = [[k[0],max(la),k[1]] for k,la in key.iteritems()]
点赞