python set add 导致问题 TypeError: unhashable type: 'list'
2023-09-27 14:25:21 时间
问题复现
>>> a = set() >>> b = set() >>> b.add(1) >>> a.add(b) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set'
>>> c = list(b) >>> a.add(c) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
>>> tuple(b) (1,)
>>> a.add(b)
>>>
现象:往set对象里add列表、集合对象时,时提示他们是不可hash的,而对于tuple类型就可以。
原因:set里面的对象是hash存储(所以是无序的),对于python万物都是对象,如果存储一个list对象,而后改变了list对象,那set中刚才存储的值的hash就变了。
结论:set是hash存储,必须存储不变的对象,例如字符串、数字、元组等。
相关文章
- python中,获取字符串的长度
- python set快速的删除
- python set集合是无需的,遍历也是无需的特别注意
- Python 集合(Set)、字典(Dictionary)
- python 协程库gevent学习 -- 超时、互斥锁(BoundedSemaphore)、local
- 【华为OD机试真题 python】 约瑟夫问题【2022 Q4 | 100分】
- 安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境, 使用ubuntu 自带的Python环境
- 零基础学员必看的python课程大纲
- python模块之imghdr检测图片类型
- python 自动化数据提取之正则表达式
- Python中的get和set方法
- python数字图像处理(5):图像的绘制
- 《Python数据可视化编程实战》——导读
- Python之异常处理
- 教你用Python搭建人脸识别开放平台
- 快速部署Python应用:Nginx+uWSGI配置详解
- Python、Django、Mysql详细搭建开发,model操作数据库以及执行原生SQL
- Python蓝桥杯训练:数组和字符串 Ⅰ