不变对象dict(字典)和 set
dict
dict 是字典的意思,就是把数据存在一个字典里面,查找也和字典一样方便。
例如:
name={'anqi': 1,'anqijiang': 2,'zhouanqi': 3}
print(name['anqijiang'])
结果:2
一个key对应一个value,且一但初始化便不能改变。dict的key必须是不可变对象 。
set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。
重复的元素在set中自动被过滤。再次添加也没有效果。
因为dict和set存放的是 不可变量,所以将可变量放入dict或者是set 皆不可行。
看一组代码:
>>> tuple1=(1,2,3) #这是一个数组,其值不可变
>>> dict1={'tuple1':tuple1} #把这个数组放入字典中
>>> dict1 #可执行成功
{'tuple1': (1, 2, 3)}
>>> set1={tuple1} #放入set中
>>> set1 #可执行成功
{(1, 2, 3)}
>>> tuple2=(1,[2,3]) #数组2,其元素中包括一个整形和一个列表,列表是可变对象
>>> dict2={'tuple2':tuple2} #因为dict中只有key是不可变对象
>>> dict2 #所以dict2可以执行
{'tuple2': (1, [2, 3])}
>>> set2={tuple2} #set整个存储的都是不可变对象,所以不可以执行
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
set2={tuple2}
TypeError: unhashable type: 'list'