list 是可变类型,无法进行 hash,或者说凡可变类型都无法进行 hash;

1. list 作为字典(dict)的 key

注意字典,无论是 Python 2.x 还是 Python 3.x 都要求它的 key 类型是可哈希的(hashable),

>>> d = {}
>>> d[[1, 2]] = 'good'
TypeError: unhashable type: 'list'
  • (1)range 在 Python 2.x 得到一个 list 类型,自然不可哈希
  • (2)range 在 Python 3.x 得到的是 range 类型,可哈希,
  • (3)Python 2.x 中的 xrange 的用法等价于 Python 3.x 中的 range,仅用于迭代(或者进行强转为其他容器)

所以在 Python 2.x,不可使用 range 作为 dict 的 key 类型,而必须使用 xrange。

2. nested list

a = [[1, 2], [3, 4], [5, 6]]
try:print(list(set(a)))
except TypeError, e:print 'Error:', e

list 类型不可 hash,出现在 set(a),使用 tuple 替换:

a = [[1, 2], [3, 4], [5, 6]]
try:print(list(set(tuple(i) for i in a)))
except TypeError, e:print 'Error:', e

Python 2.x vs Python 3.x(四)—— TypeError: unhashable type相关推荐

  1. python TypeError: unhashable type: 'set'

    写代码时遇到这个问题,代码大概如下: for i in dataSet:for j in canSet:if j.issubset(i):can_num_dic[j] = can_num_dic.ge ...

  2. Python debug——TypeError: unhashable type(list/set/dict)

    正如错误提示,list/set/dict 均不可被哈希. 这一异常通常出现在,调用 set(-) 来构造一个 set (集合类型)时,set() 需要传递进来可哈希的元素(hashable items ...

  3. Python编码报错 TypeError: unhashable type set

    问题: TypeError: unhashable type set class FTP(object):def __init__(self,ip,user,passwd) :self.ip = ip ...

  4. python flag用法_Python 进阶之路 (四) 先立Flag, 社区最全的Set用法集锦

    Set是什么 大家好,恰逢初五迎财神,先预祝大家新年财源滚滚!! 在上一期详解tuple元组的用法后,今天我们来看Python里面最后一种常见的数据类型:集合(Set) 与dict类似,set也是一组 ...

  5. [python 进阶] 9. 符合Python风格的对象

    文章目录 9.1 对象表示形式 9.2 再谈向量类 9.3 备选构造方法 9.4 classmethod与staticmethod 9.5 格式化显示 9.6 可散列的Vector2d 什么是可散列的 ...

  6. python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...

    image.png 网上现在Python学习资料有很多,但是很杂.很多初学Python的朋友就不知道该怎么去抉择,那些是自己当下所需要的. 刚好朋友是北大的博士,在IT行业也工作八年了.就把他学习Py ...

  7. python猜数字1001untitled_ML - Python 基础

    数据类型 Numeric & String 1. Python数据类型 1.1 总体:numerics, sequences, mappings, classes, instances, an ...

  8. python list 实现原理,Python 列表(List)的底层实现原理分析

    Python 列表的数据结构是怎么样的? 列表实际上采用的就是数据结构中的顺序表,而且是一种采用分离式技术实现的动态顺序表 但这是不是Python的列表? 我的结论是顺序表是列表的一种实现方式. 书上 ...

  9. python编程常用代码-Python编程常见问题与解答

    1.问:Python代码运行速度和C语言相比,哪个更快? 答:一般来说,Python代码的运行速度比C语言的慢很多,但是如果充分运用内置函数.标准库对象和函数式编程模式的话,运行速度会提高很多,可以接 ...

最新文章

  1. 在Mac OS环境下安装MySQL服务
  2. Request header field Content-Type is not allowed by Access-Control-Allow-Headers跨域
  3. C# GDI+ 绘图
  4. java一个式子开根号语句_Oracle查询语句,你知道几个?(上)
  5. python生成json_python中如何进行json转化
  6. Java生成CSV文件的方法
  7. easybcd添加或删除启动选项
  8. 视频教程-带你轻松入门MATLAB-Matlab
  9. IEEE COMMUNICATIONS LETTERS 写作Latex模板
  10. Paper和陈丹琦撞车是一种怎样的体验
  11. Python黑科技神奇去除马赛克
  12. [随记] 注释//TODO的作用
  13. 【C++】「一本通 1.1 例 4」加工生产调度
  14. 袋式过滤器 - - 过滤与分离的基本原理,结构和布局的控制袋式过滤器
  15. 极智开发 | 华为云ECS本地开发环境搭建
  16. 少儿编程Scratch学习教程4--基本操作(一)特效例子
  17. 计算机科学分为哪些领域,计算机科学技术主要包含哪些领域
  18. 你们听歌都是用什么软件听?这里有三款优秀的小众音乐播放器!
  19. 详解C语言自定义类型(结构体,位段,枚举,联合)
  20. 解题-->在线OJ(四)

热门文章

  1. 2020-10-27中国大学MOOC学习进度
  2. MySQL 字段类型解析
  3. 新泰一中2021年高考成绩查询,牛!泰安新泰一中2018年高考一班级62人全部上本科线...
  4. python3 科学计算_python3 科学计算之pandas入门(一)
  5. LeetCode 207. 课程表(广度优先遍历)
  6. Python——元组Tuple
  7. CUDA ---- Warp解析
  8. 关于排序算法思想总结,你该了解这些
  9. 解决XP中CPU占用率过高问题, 关了445这个端口(ZT)
  10. 图像相似度算法--SIFT算法详解