从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可能重要,也可能不重要。