删除元组对(如果它们是sam)

2024-03-28 14:12:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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()添加。你知道吗

你有什么想法吗?你知道吗


Tags: add列表条目元组setgamma2
1条回答
网友
1楼 · 发布于 2024-03-28 14:12:30

你可以尝试使用元组和集合

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'))}

集合-唯一值列表

  • 设置内部循环-需要引导项使它们相等
  • 下一步使用元组只作为糖,使外层集
  • 最后一组我们用来得到唯一的值

如果你想在结果中使用相同的类型,你可以这样做:

[list(y) for y in set([tuple(set(x)) for x in gamma2])]

会给你

[[('r', 'w'), ('p', 'u')], [('p', 'w'), ('r', 'u')]]

相关问题 更多 >