【发布时间】:2016-03-07 06:05:09
【问题描述】:
如果我有如下的元组列表:
[('a', 'b'), ('c', 'd'), ('a', 'b'), ('b', 'a')]
我想删除重复的元组(在内容和内部项目的顺序方面重复),以便输出为:
[('a', 'b'), ('c', 'd')]
或者
[('b', 'a'), ('c', 'd')]
我尝试将其转换为 set 然后列表,但输出将在结果集中同时保持 ('b', 'a') 和 ('a', 'b')!
【问题讨论】:
-
... 将所有项目放在一个集合中,然后从集合条目中创建一个列表 - 这可能以前被问过
-
你的问题是
('a','b') != ('b','a'),或者更具体地说,hash(('a','b')) != hash(('b','a'))。做一个初始列表理解,对每个元组进行排序,然后转换为一个集合 -
另外,您可能应该改写您的问题,因为“在内容和内部项目顺序方面重复”意味着您希望
('a','b')和('b','a')不相等......