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

4 投票
3 回答
719 浏览
提问于 2025-04-17 01:43

我现在在处理一个脚本,这个脚本里有一些列表,长得像这样:

example = [ ((2,1),(0,1)), ((0,1),(2,1)), ((2,1),(0,1)) ]

现在把这个列表转换成一个集合,结果是:

set( [ ((2,1),(0,1)), ((0,1),(2,1)) ] )

为了我的需求,我需要把这些元组也视为相等。我不在乎顺序是什么样的。我想到的所有解决办法都很麻烦,所以如果有人有好的主意,我会非常感激。

3 个回答

0

首先,把所有的元素也转换成集合。然后,把整个列表变成一个集合。

6

听起来你可能应该用不可变集合(frozensets)而不是元组(tuples)。

>>> 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)])])
5

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,有人可能在使用一个叫做“库”的东西时,发现它没有按照预期工作。这种情况可能会让人感到困惑,因为我们可能不知道哪里出了问题。

通常情况下,解决这些问题的第一步是检查我们写的代码,看看有没有错误。接着,我们可能需要查阅一些文档,了解这个库是如何工作的,或者看看其他人是怎么解决类似问题的。

如果还是找不到解决办法,可以考虑在网上寻求帮助,比如在一些技术论坛上发帖,描述自己的问题,看看有没有人能提供建议或解决方案。

总之,遇到问题时不要着急,慢慢分析,查找资料,通常都能找到解决的办法。

In [10]: set(tuple(sorted(elt)) for elt in example)
Out[10]: set([ ((0, 1), (2, 1)) ])

撰写回答