基于多个条件的重复数据消除python列表

基于多个条件的重复数据消除python列表,python,python-2.7,Python,Python 2.7,我有一份清单: mylist=[('Item A','CA','10'),('Item B','CT','12'),('Item A','CA','14'),('Item A','NH','10')] 我想删除基于第1列和第2列的重复项。因此,我期望的输出是: [('Item A','CA','10'),('Item B','CT','12'),('Item A','NH','10')] 我真的不知道该怎么做,所以我没有发布任何代码,但我只是想寻求一些帮助:)Dict键可以是任何可哈希类型。创

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

我想删除基于第1列和第2列的重复项。因此,我期望的输出是:

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

我真的不知道该怎么做,所以我没有发布任何代码,但我只是想寻求一些帮助:)

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

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

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


这将使用元素0和1作为键(隐式删除重复项),从mylist的元素创建dict。由于mylist按相反顺序迭代,最后一个具有重复键的元素(元素0和1)将保留在目录中。

不能将列表用作键。不过元组还是可以的。幸运的是,源列表包含元组:)
{ tuple(item[0:2]):item for item in mylist[::-1] }.values()