缘起上文,正式进入,搭建自己Python体系构造--列表
今日进入字典,一起来看。
二、 字典 Dictionary
字典是一种有序的数据结构,可以存放多种类型的数据,其他语言中就是 Map 映射。是一种键值对存储形式的容器。键值之间使用:分割,多个键值之间使用逗号分割,所有的键值对包裹在一对大括号中{}。字典中元素没有顺序,可以通过键定位值。
1. 特点
元素为键值对,作为键,类型必须是不可改变的类型,比如字符串,字面值,元组等。若是键存在了,赋值就会覆盖之前对应的值。和 list 比较,dict 有以下几个特点:
1)查找和插入的速度极快,不会随着 key 的增加而增加,内部使用 hash 算法定位。
2)需要占用大量的内存,内存浪费多。dict 是空间来换时间,而 list 则是时间换空间。
2. 构建
1) 、字面 值
>>>
注意:键必须是不可变的,如 字符串、数字、元组
>>>
2) 、构造函数
使用 dict()构造函数构建
dict([key1=value2,...,keyn=valuen])
dict([[(key1,value1),...,(keyn,valuen)]])
注意:最外面的中括号为列表符号,内部的中括号为可选符号。
>>> dict_name=dict(name='dachui',age=18)
>>> dict_name
{'name': 'dachui', 'age': 18}
>>> len(dict_name)
2
>>> dict_name2=dict([('name','zs'),('age',18),('addr','杭州')])
>>> dict_name2
{'name': 'zs', 'age': 18, 'addr': ' 杭州 '}
或借助 zip 函数构建
>>> dict_name3 = dict(zip(['name','age','addr'],['dachui',18,'杭州']))
>>> dict_name3
{'name': 'dachui', 'age': 18, 'addr': ' 杭州 '}
3. 哈希算法(Hash)
Dictionary可以用在很多需要快速查找的地方,一定注意dict的键必须是不可变对象。因为在 dict 定位时,其内部要根据 key 计算 value 的存储位置,假设键可变,一旦键的值改变了,那么计算的位置就是错误的,这也就是为什么 dict 的字必须是不可变的对象了。这个通过 key 计算位置的算法就是鼎鼎大名的哈希算法(Hash)。在 Python 中,字符串、整数、元组等都是不可变的,所以可以放心地作为 key。而 list、set 是可变的,就不能作为 key。
>>> dict_name={[1]:2}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
可以使用 hash(element)方法查看 key 哈希计算后的地址。
4. 常用方法
查看 API,可以得到我们要的所有方法
接下来就是自己练习练习,如果还不够清晰,请从视频找答案。
Python--字典构建
字典之hash表