如何将 dict_values 转换为集合

新手上路,请多包涵

我有一个 dict 包含集合作为每个键的值,例如

{'key1': {8772, 9605},'key2': {10867, 10911, 10917},'key3': {11749,11750},'key4': {14721, 19755, 21281}}

现在我想把每个值,即一组 int s 放入 set ,我想知道什么是最好的方法/最有效的方法来做到这一点。

 {8772,9605,10867,10911,10917,11749,11750,14721,19755,21281}

I tried to retrieve the values from the dict using dict.values() , but that returns a dict_values object, making it a list, list(dict.values()) gave我的一组列表, set(list(exact_dups.values())) 给我错误,

 TypeError: unhashable type: 'set'

更新。忘了说结果集也需要保持唯一性,即不重复。

原文由 daiyue 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 480
2 个回答

您可以使用 set.union() 和解压值来完成:

 set.union(*my_dict.values())

或者您可以结合使用 set.union()reduce

 reduce(set.union, my_dict.values())

原文由 zipa 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 reduceset union 的组合:

 from functools import reduce

result = reduce(lambda a, b: a.union(b), my_dict.values(), set())
print(result)

原文由 omu_negru 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进