基于多个标准的重复数据删除python列表

时间:2014-11-06 05:42:03

标签: python python-2.7

我有一个清单:     mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item A','CA','14'),('项目A','NH','10')]

我想根据第1列和第2列删除重复项。所以我想要的输出是:

[('Item A','CA','10'),('Item B','CT','12'),('Item A','NH','10')]

我不确定如何解决这个问题,所以我没有发布任何代码,但只是寻求一些帮助:)

2 个答案:

答案 0 :(得分:1)

使用词典。另一个答案是好的。对于多样性,这里有一个单独的表达式,它将为您提供uniq的列表(尽管不保留元素的顺序)。

{ tuple(item[0:2]):item for item in mylist[::-1] }.values()

这将使用元素0和1作为键创建一个来自mylist元素的dict(隐式删除重复项)。因为mylist以相反的顺序迭代,所以带有重复键的最后一个元素(元素0和1)将保留在dict中。

答案 1 :(得分:0)

Dict键可以是任何可清洗类型。创建一个dict,每个项目的前两列作为键,如果之前没有看到这些列,则只添加到unique

unique = {}
for item in mylist:
    if item[0:2] not in unique:
        unique[item[0:2]] = item
print unique.values()