【问题标题】:Add a set to existing set将集合添加到现有集合
【发布时间】:2020-10-19 10:43:21
【问题描述】:

我的目标是从 a_list 中的所有集合中获取交集。 我的错误是,如何将值添加到 a_set。

a_set = set()
for i in range(len(a_list)-1):
    a_set.add(a_list[i] & a_list[i+1])

在哪里: a_list 是用数字填充的集合列表。 a_list = [{224, 225, 3, 42, 108, 45, 78, 173, 115, 23, 221, 222, 191}, {2, 67, 6, 171, 109, 79, 222}, {160, 2, 222, 184}, {225, 2, 4, 76, 45, 16, 222, 223}]

错误: a_set.add(a_list[i] & a_list[i+1]) TypeError: unhashable type: 'set'

【问题讨论】:

标签: python set intersection


【解决方案1】:

您的问题是您尝试将集合添加到集合中。
这是无法做到的 - unhashable type: 'set'
下面的代码可以满足您的需求 - 它将交集成员添加到最终集合中。

a_list = [{224, 225, 3, 42, 108, 45, 78, 173, 115, 23, 221, 222, 191}, {2, 67, 6, 171, 109, 79, 222}, {160, 2, 222, 184}, {225, 2, 4, 76, 45, 16, 222, 223}]
u = set.intersection(*a_list)
print(u)

输出

{222}

【讨论】:

  • 这不会从所有集合中产生交集。输出应该是 222。
  • @eirikurbernharðsson 代码已修复。
猜你喜欢
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多