从python列表中查找唯一值

从python列表中查找唯一值,python,Python,如何查找列表列表的唯一项 在下面的示例中,我只希望有两项 mylist=[[' Dish Towel .\n', '1.000', '149.000'], [' Dish Towel .\n', '1.000', '149.000'], [' Kitchentowel(mix designs) .\n', '1.000', '99.000'], [' Kitchentowel(mix designs) .\n', '1.000', '99.000']] 预期结果: newlist=[['

如何查找列表列表的唯一项

在下面的示例中,我只希望有两项

mylist=[[' Dish Towel .\n', '1.000', '149.000'],
 [' Dish Towel .\n', '1.000', '149.000'],
 [' Kitchentowel(mix designs) .\n', '1.000', '99.000'],
 [' Kitchentowel(mix designs) .\n', '1.000', '99.000']]
预期结果:

newlist=[[' Dish Towel .\n', '1.000', '149.000'],
 [' Kitchentowel(mix designs) .\n', '1.000', '99.000']]
我试过了,但我打错了

  output = set()
  for x in mylist:
       output.add(x)
  print output

您可以尝试以下方法:

output = []
for x in mylist:
    if x not in output:
        output.append(x)
print output

您可以使用
set
保留唯一项:

>>> set(map(tuple,mylist))
set([(' Kitchentowel(mix designs) .\n', '1.000', '99.000'), (' Dish Towel .\n', '1.000', '149.000')]) 

请注意,由于
set
只接受可散列对象,因此需要将列表转换为tuple,然后使用
set
output.add(tuple(x))
?列表是可变的,不能存储在集合中。有点离题:在我看来,那些内部列表更适合使用字典建模。这是可行的,但在最坏的情况下运行O(n^2)时间,因此对于特别大的列表可能不可取。最坏的情况应该只有O(n),因为只有一个循环。O(n)表示循环,O(n)对于操作中的
,组合成O(n^2)你的权利,我忘记了。我认为这可能会很有用,因为它会使输出保持与输入相同的格式,而不是一组元组,但你是对的,它可能有点慢。是的,保持原始键入可能是一个优势。以及维持项目的原始顺序,这对OP可能重要,也可能不重要。