设置差异和丢弃顺序

set difference and discard order

我有以下几套:

>>> s2 = set(((1,3),(2,3,6,4)))
>>> s1 = set(((1,3),(2,3,4,6)))
>>> s1.symmetric_difference(s2)
{(2, 3, 4, 6), (2, 3, 6, 4)}

我想比较上面的两个集合,但是集合丢弃了它们的顺序,这意味着它 return 空集合,例如:

>>> s1.symmetric_difference(s2)
set()

更新:

确实当两组的顺序不同时,我想设置假设它们是一组。 如何用 python 中的集合定义它?

将您的集合存储为集合而不是元组。由于您需要它们可散列,因此请使用 frozensets。喜欢 frozenset((1,3)) 而不是 (1,3).

顺便说一句,您还可以通过 s1 ^ s2.

获得对称差异

使顺序无关的一种方法是使其相同。您可以在将元组放入集合之前对其进行排序:

>>> s2 = set(tuple(sorted(s)) for s in (((1,3),(2,3,6,4))))
>>> s1 = set(tuple(sorted(s)) for s in (((1,3),(2,3,4,6))))
>>> s1.symmetric_difference(s2)
set()