【发布时间】:2017-11-18 02:51:02
【问题描述】:
我想将集合 A 和 B 存储在集合 C 中。
我的条件是,如果设置A = {a,b} 并设置B = {b,a}
那么设置A等于设置B
然后设置C 将是= {{a,b}}
是否有支持这样的数据类型?
【问题讨论】:
-
不,因为 A 和 B 相等,它们的哈希值相同,所以你不能同时拥有两个。 (我指的是散列冻结集)
我想将集合 A 和 B 存储在集合 C 中。
我的条件是,如果设置A = {a,b} 并设置B = {b,a}
那么设置A等于设置B
然后设置C 将是= {{a,b}}
是否有支持这样的数据类型?
【问题讨论】:
frozenset() 类型符合您的条件:
>>> A = frozenset({"a", "b"})
>>> B = frozenset({"b", "a"})
>>> A == B
True
>>> frozenset({ A, B })
frozenset({frozenset({'b', 'a'})})
【讨论】:
是的,那个数据类型就是set。诀窍是 inside 集合必须是 frozensets,set 的不可变对应物,才能将它们放置在另一个集合中。您可能还想将外部set 设为frozenset,具体取决于您想用它做什么;例如,如果您想将这些集合无限期地粘贴在更多层的集合中,那么对所有内容都使用 freezesets 可能更容易。
>>> A = frozenset(['a', 'b'])
>>> B = frozenset(['b', 'a'])
>>> C = {A, B}
>>> C
set([frozenset(['a', 'b'])])
【讨论】:
list 或 tuple,但不清楚你想要交集是什么意思。
set/frozenset,或者您可以做其他事情。不过,我们正在远离这个问题的焦点。如果您还有其他问题要问,请发布一个新问题。