Python 如果元组对相同,则删除它们

Python 如果元组对相同,则删除它们,python,list,compare,tuples,Python,List,Compare,Tuples,我对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')] 所以我想在

我对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()添加


你有什么想法吗?

你可以尝试使用元组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])
在某些情况下,最好在
集合中使用
排序
(谢谢@rockikz)

第三种解决方案是使用
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')]]

你关心列表的顺序吗?如果你使用集合,什么不起作用?不是一个元组列表,而是一组集合,那么您将自动不具有重复项。是的,排序很重要@RobinZigmond如果我使用集合,我将具有重复项,因为[('p','u'),('r','w')]和[('r','w'),('p','u')]对于哈希表是不同的。它们有不同的散列值。哦,哇,谢谢,这很有效!那么你能不能解释一下,那里发生了什么?在回答中增加了细节为什么这对我不起作用?我得到了
{(('r','u'),('p','w'),('p','w'),('r','u'),('r','w'),('p','u'),('p','u'),('r','w'))}
结果是在windows上,Python3.6.6 64位,而在linux上使用相同的Python版本,你能解释一下吗?当我添加
sorted sorted()
时,效果很好,像这样:
set([tuple(sorted sorted code>)(在gamma2中为x设置(x))
[[('r', 'w'), ('p', 'u')], [('p', 'w'), ('r', 'u')]]