我有一个列表列表,如果第一个元素中存在重复,我想删除重复和原始列表:
x=[["1.2.3.4","thing1"], ["8.8.8.8","thing2"], ["8.8.8.8","thing3"], ["8.8.4.4","thing4"]]
所以我希望输出为:
[["1.2.3.4","thing1"], ["8.8.4.4","thing4"]]
我尝试了以下内容:
print [a for a in x if x[0].count(a[0]) == 1]
但是,我只得到第一项:
[['1.2.3.4', 'DNS']]
任何帮助将不胜感激。如果找到重复,我需要删除重复值和原始值。 “如果第一个元素是重复的,则从列表中删除元组的大多数pythonic方法”和“从Python中删除列表列表中的重复项”都保留其中一个重复值。 谢谢。
答案 0 :(得分:0)
您可以使用collections.Counter
:
from collections import Counter
counts = Counter([a[0] for a in x])
print([a for a in x if counts[a[0]]==1] )
#[['1.2.3.4', 'thing1'], ['8.8.4.4', 'thing4']]
首先构建一个Counter
来计算列表中每个项目中第一个元素的出现次数。然后过滤您的列表,并仅保留该项目的计数为1的值。