我想将一组两个 int 值表示为一个值,所以我可以拥有:
x = f(a,b) = f(b,a)
所以 x 不应代表多个集合。
请提供任何帮助。
该frozenset
类型是可散列的,您可以从任何可迭代对象中创建一个。要获取哈希值,只需使用内置hash
函数:
x = hash(frozenset([a, b]))
如果您不希望将整数作为 x 的值,我认为返回有序元组应该没问题(它适用于所有数量的值):
>>> s = {1, 2}
>>> s2 = {2, 1}
>>> f = lambda s: tuple(sorted(s))
>>> f(s)
(1, 2)
>>> f(s2)
(1, 2)
>>> f(s) == f(s2)
True