【问题标题】:TypeError: unhashable type: 'set'TypeError:不可散列的类型:'set'
【发布时间】:2018-11-04 16:59:57
【问题描述】:

我有以下代码,它给了我集合 A 和 B 的并集,但它给了我错误:

TypeError: unhashable type: 'set'

代码:

A = {1, {2}, 3}
B = {{1, {2}}, 3, 4}
A | B

出了什么问题?

【问题讨论】:

  • 集合不能包含集合,因为正如错误所说,集合是不可散列的。只有可散列的元素可以添加到集合中。
  • 请注意,错误发生在第 1 行。所以@tripleee 联合是无关紧要的。

标签: python python-3.x


【解决方案1】:

正如@WilliemVanOnsem 指出的那样:sets 是可变的,不可散列,不能包含在其他集合中。

如果您需要可散列集,您可以use frozensets - 它是冻结(不可变),因此是可散列的:

A = {1, frozenset({2}), 3}
B = {frozenset({1, frozenset({2})}), 3, 4}
print(A | B)

输出:

set([1, 3, 4, frozenset([2]), frozenset([1, frozenset([2])])])

【讨论】:

    猜你喜欢
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 2012-10-27
    • 2019-01-29
    • 2012-02-19
    相关资源
    最近更新 更多