介绍
字典(dict)是Python内置提供的一种常用数据结构,他用于存放具有映射(mapping)关系的数据。
可变对象。
dict 常用操作
创建
两种方式,使用dict()函数创建字典;使用花括号语法创建字典。
dict1 = {} |
dict的key必须为不可变类型,所以字符串、元组等类型可以作为dict的key,但像列表这种可变类型,不能作为dict的key
在使用 dict() 函数创建字典时,可以传入多个列表或元组参数作为 key-value 对,每个列表或元组将被当成一个 key-value 对,因此这些列表或元组都只能包含两个元素。例如如下代码:
'age', 18), ('sex', 'male'), ('name', 'gyj')] # 这里换成person = [['age', 18], ['sex', 'male'], ['name', 'gyj']]也是可以的 person = [( |
通过key访问value
三种方式:
- 通过方括号语法访问
- 使用get方法
- 使用setdefault()方法
这三者不同的地方在于:
- 使用方括号语法访问并不存在的key时,字典会引发KeyError错误
- 但如果使用get()方法访问不存在的key,该方法会简单地返回None,不会导致错误
- 使用setdefault(),当程序要获取的 key 在字典中不存在时,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的 value。
scores = {'语文': 89} |
通过key添加k-v对
例如:
scores['数学'] = 93 |
通过key删除k-v对
使用del语句删除k-v对
del scores['语文'] |
通过key修改k-v对
两种方式:对存在的key-value对赋值,改变key-value对;使用update方法
scores['数学'] = 95 |
判断指定key是否存在
使用in或not in 运算符判断key是否存在
'数学' in scores # True |
清空字典中所有的k-v对
scores.clear() |
获取dict所有k-v对,所有key,所有value
items():获取字典中的所有 key-value 对
keys():获取字典中的所有 key
values():获取字典中的所有 value
这三个方法依次返回 dict_items、dict_keys 和 dict_values 对象,Python 不希望用户直接操作这几个方法,但可通过 list() 函数把它们转换成列表。
'数学': 96, '英语': 88} scores = { |
弹出指定key的k-v对
pop() 方法用于获取指定 key 对应的 value,并删除这个 key-value 对。例如
math_score = scores.pop('数学') |
随机弹出k-v对
popitem() 方法用于随机弹出字典中的一个 key-value 对。
此处的随机其实是假的,正如列表的 pop() 方法总是弹出列表中最后一个元素,实际上字典的 popitem() 其实也是弹出字典中最后一个 key-value 对。由于字典存储 key-value 对的顺序是不可知的,因此开发者感觉字典的 popitem() 方法是“随机”弹出的,但实际上字典的 popitem() 方法总是弹出底层存储的最后一个 key-value 对。
根据给定的多个key创建字典
fromkeys() 方法使用给定的多个 key 创建字典,参数可以是list也可以是tuple,这些 key 对应的 value 默认都是 None;也可以额外传入一个参数作为默认的 value。
# 使用列表创建包含2个key的字典 |
使用字典格式化字符串
举例:
# 字符串模板中使用key |
参考资料
- Python字典及基本操作(超级详细)
- 《Python 学习手册(第四版)》