首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >集合的Python联合提高了TypeError

集合的Python联合提高了TypeError
EN

Stack Overflow用户
提问于 2018-08-16 15:31:44
回答 2查看 330关注 0票数 2

考虑一系列集合:

代码语言:javascript
运行
复制
>>> [{n, 2*n} for n in range(5)]
[{0}, {1, 2}, {2, 4}, {3, 6}, {8, 4}]

将它们直接传递到联合方法中会产生正确的结果:

代码语言:javascript
运行
复制
>>> set().union({0}, {1, 2}, {2, 4}, {3, 6}, {8, 4})
{0, 1, 2, 3, 4, 6, 8}

但将它们作为列表或生成器表达式传递会导致TypeError:

代码语言:javascript
运行
复制
>>> set().union( [{n, 2*n} for n in range(5)] )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'

>>> set().union({n, 2*n} for n in range(5))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'

为什么会发生这种情况?有哪些解决方案?

EN

Stack Overflow用户

回答已采纳

发布于 2018-08-16 15:33:39

出现此错误的原因是set.union()需要一个或多个集合(即set.union(oneset, anotherset, andathirdone)),而不是list或生成器。

解决方案是解压列表或生成器:

代码语言:javascript
运行
复制
>>> set().union( *({n, 2*n} for n in range(5)) )
{0, 1, 2, 3, 4, 6, 8}
票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51871836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档