如何将值列表添加到现有集?
当前回答
列表对象是不可哈希的。你可能想把它们转换成元组。
其他回答
列表对象是不可哈希的。你可能想把它们转换成元组。
添加列表的内容
使用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'}
添加列表本身
不可能直接将列表本身添加到set中,因为set元素必须是可哈希的。
相反,可以先将列表转换为元组:
>>> a = {('a', 'b', 'c')}
>>> xs = ['d', 'e']
>>> a.add(tuple(xs))
>>> a
{('a', 'b', 'c'), ('d', 'e')}
若要将列表中的元素添加到集合中,请使用update
从https://docs.python.org/2/library/sets.html
s.update(t):返回包含从t中添加的元素的集合s
E.g.
>>> s = set([1, 2])
>>> l = [3, 4]
>>> s.update(l)
>>> s
{1, 2, 3, 4}
如果您想将整个列表作为单个元素添加到集合中,则不能,因为列表是不可哈希的。你可以添加一个元组,例如s.d add(tuple(l))。在使用内置set函数时,请参阅TypeError: unhashable type: 'list'了解更多信息。
您将希望使用可哈希的元组(不能像列表那样对可变对象进行哈希)。
>>> a = set("abcde")
>>> a
set(['a', 'c', 'b', 'e', 'd'])
>>> t = ('f', 'g')
>>> a.add(t)
>>> a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])
尝试使用* unpack,如下所示:
>>> a=set('abcde')
>>> a
{'a', 'd', 'e', 'b', 'c'}
>>> l=['f','g']
>>> l
['f', 'g']
>>> {*l, *a}
{'a', 'd', 'e', 'f', 'b', 'g', 'c'}
>>>
非编辑器版本:
a=set('abcde')
l=['f', 'g']
print({*l, *a})
输出:
{'a', 'd', 'e', 'f', 'b', 'g', 'c'}
推荐文章
- Python 3.7数据类中的类继承
- 如何在PyTorch中初始化权重?
- 计数唯一的值在一列熊猫数据框架像在Qlik?
- 使用Pandas将列转换为行
- 从matplotlib中的颜色映射中获取单个颜色
- 将Pandas或Numpy Nan替换为None以用于MysqlDB
- 使用pandas对同一列进行多个聚合
- 使用Python解析HTML
- django MultiValueDictKeyError错误,我如何处理它
- 如何在for循环期间修改列表条目?
- 我如何在Django中创建一个鼻涕虫?
- 为什么java.util.Set没有get(int index)?
- 数组与列表的性能
- 没有名为'django.core.urlresolvers'的模块
- 蟒蛇导出环境文件