根据单个元素

时间:2018-04-03 17:37:06

标签: python list

我有一个列表列表,如果第一个元素中存在重复,我想删除重复和原始列表:

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中删除列表列表中的重复项”都保留其中一个重复值。 谢谢。

1 个答案:

答案 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的值。