如何将值列表添加到现有集合?
原文由 Adam Matan 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 set.update()
或 |=
运营商:
>>> a = set('abc')
>>> a
{'a', 'b', 'c'}
>>> xs = ['d', 'e']
>>> a.update(xs)
>>> a
{'e', 'b', 'c', 'd', 'a'}
>>> xs = ['f', 'g']
>>> a |= set(xs)
>>> a
{'e', 'b', 'f', 'c', 'd', 'g', 'a'}
无法将列表本身直接添加到集合中,因为集合元素必须是可 散列的。
相反,可以先将列表转换为元组:
>>> a = {('a', 'b', 'c')}
>>> xs = ['d', 'e']
>>> a.add(tuple(xs))
>>> a
{('a', 'b', 'c'), ('d', 'e')}
原文由 aehlke 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
您不能将列表添加到集合中,因为列表是可变的,这意味着您可以在将列表添加到集合后更改列表的内容。
但是,您可以将元组添加到集合中,因为您无法更改元组的内容:
编辑:一些解释:文档将
set
定义 为不同哈希对象的无序集合。 对象必须是可散列的,以便查找、添加和删除元素比每次执行这些操作时查看每个单独的元素更快。使用的具体算法在 Wikipedia 文章 中进行了解释。 Python 散列算法在 effbot.org 和__hash__
函数中的 python 参考 中进行了解释。一些事实:
list
:使用tuple
代替set
:使用frozenset
代替dict
:没有官方对应,但有一些 食谱