我在python中遇到元组问题。我有以下元组列表:
gamma2 = [[('p', 'u'), ('r', 'w')], [('p', 'w'), ('r', 'u')], [('r', 'u'), ('p', 'w')],[('r', 'w'), ('p', 'u')]]
现在,[('p', 'u'), ('r', 'w')]
和[('r', 'w'), ('p', 'u')]
这两个部分对我来说都是一样的,[('p', 'w'), ('r', 'u')]
和[('r', 'u'), ('p', 'w')]
也是一样。
所以我想删除列表中的这些重复项之一,但是我不知道如何。
我尝试使用哈希表和set,但是问题在于,该元组对与哈希表不同,它将由gamma2.add()
添加。
那么你有个主意吗?
答案 0 :(得分:1)
您可以尝试使用元组ans集
gamma2 = [[('p', 'u'), ('r', 'w')], [('p', 'w'), ('r', 'u')], [('r', 'u'), ('p', 'w')],[('r', 'w'), ('p', 'u')]]
set([tuple(set(x)) for x in gamma2])
在某些情况下,最好在sorted
内使用set
代替(感谢@rockikz)
set([tuple(sorted(x)) for x in gamma2])
第三个解决方案是使用frozenset
set([frozenset(x) for x in gamma2])
将为您提供结果:
{(('p', 'w'), ('r', 'u')), (('r', 'w'), ('p', 'u'))}
set-唯一值列表
,如果您想在结果中使用相同的类型,则可以执行以下操作:
[list(y) for y in set([tuple(set(x)) for x in gamma2])]
会给你
[[('r', 'w'), ('p', 'u')], [('p', 'w'), ('r', 'u')]]