我在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')]
是相同的。
所以我想删除列表中的一个双条目,但我不知道怎么做。
我尝试过哈希表和集合,但问题是,这个元组对与哈希表不同,它将由gamma2.add()
添加。
那么你有个主意吗?
您可以尝试使用元组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])
在某些情况下,最好在set
中使用sorted
(感谢@rockikz(
set([tuple(sorted(x)) for x in gamma2])
第三种解决方案是使用CCD_ 8
set([frozenset(x) for x in gamma2])
会给你结果:
{(('p', 'w'), ('r', 'u')), (('r', 'w'), ('p', 'u'))}
集合-唯一值列表
- 循环内的集合-需要引导项目使其相等
- 下一步只使用元组作为糖来生成外集
- 以及我们用来获得唯一值的最后一个集合
如果你想要相同类型的结果,你可以这样做:
[list(y) for y in set([tuple(set(x)) for x in gamma2])]
会给你
[[('r', 'w'), ('p', 'u')], [('p', 'w'), ('r', 'u')]]