首页 > 解决方案 > 将集合添加到现有集合

问题描述

我的目标是从 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'

标签: pythonsetintersection

解决方案


您的问题是您尝试将集合添加到集合中。
这是无法做到的 -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}

推荐阅读