需要一种简单的方法来删除python中嵌套元组的重复项

mon*_*top 4 python tuples

我目前正在使用一个脚本,其列表如下所示:

example = [ ((2,1),(0,1)), ((0,1),(2,1)), ((2,1),(0,1)) ]
Run Code Online (Sandbox Code Playgroud)

现在将此列表转换为集合返回:

set( [ ((2,1),(0,1)), ((0,1),(2,1)) ] )
Run Code Online (Sandbox Code Playgroud)

为了我的目的,我需要认识到这些元组是平等的.我不在乎保留订单.我能想到的所有解决方案都非常混乱,所以如果有人有任何想法,我会感激不尽.

Mik*_*ham 6

听起来你可能不会使用frozensets而不是元组.

>>> x = [((2, 1), (0, 1)), ((0, 1), (2, 1)), ((2, 1), (0, 1))]
>>> x
[((2, 1), (0, 1)), ((0, 1), (2, 1)), ((2, 1), (0, 1))]
>>> set(frozenset(ts) for ts in x)
set([frozenset([(0, 1), (2, 1)])])
Run Code Online (Sandbox Code Playgroud)


unu*_*tbu 5

In [10]: set(tuple(sorted(elt)) for elt in example)
Out[10]: set([ ((0, 1), (2, 1)) ])
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个,因为它反映了该集合的无序但可能重复的基本元素. (2认同)