Skip to main content
 首页 » 编程设计

python之如何删除列表列表中的重复值

2025年05月04日19mengfanrong

我有一个这样的列表:

 list_values=[("10",1),("10",2),("16",2),("16",1),("15",1)] 

我想要的结果是:

 Result=[("10",1),("16",2),("15",1)] 

谁能帮帮我?

请您参考如下方法:

看起来很像How do you remove duplicates from a list whilst preserving order? ,但只是“携带”第二个元素,不将其包含在散列/比较/其他内容中。

两种方式:

要么使用标记集记下第一个值的出现:

list_values=[("10",1),("10",2),("16",2),("16",1),("15",1)] 
 
seen = set() 
 
seen_add = seen.add 
 
result = [] 
for k,v in list_values: 
    if k not in seen: 
        seen_add(k) 
        result.append([k,v]) 
 
print(result) 

产量(保留顺序):

[['10', 1], ['16', 2], ['15', 1]] 

或者对反向项目使用字典以仅保留第一个值:

result = list(dict(reversed(list_values)).items()) 
 
print(result) 

yield (不会保留顺序):

[('15', 1), ('10', 1), ('16', 2)] 

使用 collections.OrderedDict 并反转两次也可以保留顺序

import collections 
 
result = list(reversed(list(collections.OrderedDict(reversed(list_values)).items()))) 

结果:

[('10', 1), ('16', 2), ('15', 1)] 

除非使用 Python 3.6+,否则字典会保留插入顺序。从 python 3.5 开始,您可以删除一些强制列表转换,这样就可以工作了:

list(reversed(collections.OrderedDict(reversed(list_values)).items()))