1. 字典dict的定义python
字典在Python中是一种可变的容器模型,是经过一组键值对(key-value)组成的。数组
这种结构类型一般也被称为映射,或关联数组,或哈系表。函数
字典中的每一个键值对用 “ :”分割,每一个键值对之间用 逗号 “ ,”分割,整个字典包括在花括号“{ }”中.spa
格式:d = {key1:value1, key2:value2, key3:value3}code
2. Python内置了字典,在其余语言中也称为map,使用键-值(key-value)存储,具备极快的查找速度。blog
用python写一个dict以下:索引
>>> d = {'Bob': 95, 'Mary': 97} >>> d['Mary'] 97
咱们能够发现,若是用dict实现,只须要一个名字和成绩的对照表,就能够直接根据名字查找成绩,不管这个表有多大,查找速度都不会变慢。内存
3. 为何dict的查找速度这么快?字符串
(1)由于dict的实现原理和查字典是同样的,以字典举例来讲,咱们在查某个字的时候,会先在字典的索引表里查到这个字对应的页码,而后直接翻到这页找到这个字。get
使用这样的方法,不管找哪一个字,查找速度都会特别快,不会随着字典大小的增长而变慢。
(2)dict就是使用这样的方法来实现的,好比给定一个名字'Bob',dict就能够在内部直接算出'Bob'对应成绩的'页码',也就是存放成绩的内存地址,直接取出来,因此速度特别快。
这种key-value的存储方式,在放进去的时候,必须根据key算出value的存放位置,这样取的时候才能根据key直接取出value。
4. 键的不可变性
键必须不可变,因此可使用数字、字符串或者元组,可是就不能够用列表。
值能够取任意的数据类型。
以下实例所示:
>>> d = {['Name']: 'Zara', 'Age': 7} 结果以下: Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
5. 键的惟一性
键通常是惟一的,同一个键不容许出现两次。而若是重复最后的一个键值则会替换掉前面的,值不须要惟一。
因为1个key只能对应1个value,因此屡次对1个key放入value,后面的值会把前面的值冲掉。
惟一性举例以下所示:
>>> dict = {'a': 1, 'b': 2, 'b': '3'} >>> dict['b'] '3' >>> dict {'a': 1, 'b': '3'}
>>> dict = {'a': 1, 'b': 2} >>> dict['b'] '2' >>> dict['b'] = 3
>>> dict
{'a': 1, 'b': '3'}
6. 数据放入dict的方法
1. 初始化指定
d = {'Bob': 95, 'Mary': 97}
2. 经过key放入
d['Adam'] = 67
3. dict内部存放的顺序和key放入的顺序是没有关系的
7. 修改dict的方法
#!/usr/bin/python d = {'Name': 'Marsa', 'Age': 6, 'Class': 'First'} d['Age'] = 18 # 更新 d['School'] = "USTB" # 添加 print("d['Age']: ", d['Age']) print("d['School']: ", d['School'])
输出结果:
d['Age']: 18
d['School']: USTB
8. key不存在,dict会报错
>>> d = {'Name': 'Marsa', 'Age': 6, 'Class': 'First'}
>>> d['Thomas']
Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Thomas'
避免key不存在这种错误的两种办法:
1. 经过in判断key是否存在 >>> 'Thomas' in d False 2. 经过dict提供的get()方法 若是key不存在,能够返回None或者本身指定的value。注意: 返回None的时候Python的交互环境不显示结果。 >>> d.get('Thomas') >>> d.get('Thomas', -1) -1
9. 在dict中删除一个key
删除字典中的元素,能够删除单一的元素,也能清空字典。 显示删除一个字典用del命令。 eg: d = {'Bob': 95, 'Mary': 97} >>> del d['Bob'] # 删除键是'Bob'的条目,删除一个key,对应的value也会从dict中删除
>>> d.clear() # 清空字典中的全部条目
>>> del d # 删除字典
也可使用pop(key)方法,删除一个key,对应的value也会从dict中删除
使用pop方法删除字典给定键key所对应的值,返回值为被删除的值 eg: d = {'Bob': 95, 'Mary': 97} >>> d.pop('Bob') 95
>>> d
{'Mary': 97}
10. dict和list的比较
dict的特色:
(1)查找和插入的速度极快,不会随着key的增长而变慢
(2)dict是用空间来换取时间的一种方法,须要占用大量的内存,内存浪费多
list的特色:
(1)查找和插入的速度随着元素的增多而变慢
(2)占用的空间比较小,内存浪费少
11. Python字典内置函数及方法