Discuss / Python / bh打卡day6

bh打卡day6

路由跳变

#1 Created at ... [Delete] [Delete and Lock User]

#定义元组

t1 = (1,2,3)   #内容不变

t2 = (1,[2,3]) #指向不变,但内容可以发生改变

#以dict为例

d1 = {t1:1}

out: {(1, 2, 3): 1}   # 创建了key为元组t1,value为1的字典

d2 = {t2:2}

TypeError: unhashable type: 'list'  # 报错:list是不可使用哈希算法的类型。

这节内容提到:

要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:

虽然t2作为tuple是不可变对象,但是这里的不可变是指“指向不变”(回顾list和tuple的内容),内容是可以发生改变的。这里为了保证Hash算法,key应同时满足内容不变和指向不变。t1是内容和指向都不变的元组,因此可以作为dict的key,而t2则不可以。


  • 1

Reply