练习:tuple虽然是不变对象,但试试把(1, 2, 3)和(1, [2, 3])放入dict或set中,并解释结果。
代码:
d1={(1,2,3)}
print(d1)#输出{(1,2,3)}
d2={(1,[2,3])}
print(d2)#报错:unhashable type:'list'
解释:dict的key是不可变对象,要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key,即[2,3]是一个list类型,可变的,则不能作为key。
练习:tuple虽然是不变对象,但试试把(1, 2, 3)和(1, [2, 3])放入dict或set中,并解释结果。
代码:
d1={(1,2,3)}
print(d1)#输出{(1,2,3)}
d2={(1,[2,3])}
print(d2)#报错:unhashable type:'list'
解释:dict的key是不可变对象,要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key,即[2,3]是一个list类型,可变的,则不能作为key。