python基础第十四节
字典是我们将要学到的最后一个数据容器类型.
回顾:
- 列表: 解决了多个变量定义的问题.
- 元组: 保证了容器内数据的安全性.
- 集合: 存储多个数据的同时还保证了唯一性.
但是以上数据容器查看元素, 只能通过遍历或者通过下标索引来获取, 十分的不方便.
字典:
字典的作用是通过部首或者拼音可以快速定位到对应的字词.
在python中, 字典作为存储数据的一种容器, 是python中的一种映射类型, 它的每个元素都由键-值(key-value)对组成, 键-值对包括key和value2部分, 其中key必须唯一, 对元素的查找和修改是根据元素的key进行的.
14.1 字典的定义
dic = {
'name': '张三',
'age': 18
}
- 每个元素的键值对之间用:分隔.
- 每个元素之间用,分隔.
- 整个字典的元素包含在大括号{}中.
- key必须是唯一的且不可变的.
空字典的创建:
# 创建一个不含任何元素的空字典.
dic = {}
# 或者
dic = dict()
使用字典关键字创建字典
dic = dict(name='zhangsan', age=18)
# 或者
key_value = [('name', '张三'), ('age', 18)]
dic = dict(key_value)
使用fromkeys创建字典
# fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
dict.fromkeys(seq[, value])
# 如下:
dic = {}.fromkeys(['name', 'age'])
总结
字典因其具有查找和操作快速的优势, 在python中使用范围很广泛, 字典是无序的. 元素的存储顺序没有意义, 使用 需注意:
- 字典的key具有唯一性.
- 字典的key只能是不可变类型.
- 字典的value可以是任意类型.
- 字典是可变的.
注意 - 同一个字典中出现相同的key, 即同一个key被多次赋值时, 程序此时不会抛出异常, 编辑器会给出警告, 只是相同的key的value值, 会被覆盖掉.
如:dic = { 'name': '张三', 'age': 18, 'age': 19 } print(dic) - 当key使用了可变类型时, 如列表,程序会抛出
TypeError: unhashable type: 'list'错误, 这是因为字典的key必须是可哈希的(类似集合)
14.2 嵌套字典和字典的取值
用嵌套字典记录多个学生和他们所对应的各个科目的成绩.
如: 张三, 和张三的语文,数学,英语的成绩. 李四, 王五等等.
14.3 字典的常用操作
- 新增元素: dict[key] = value. 往字典中新增元素
- 修改元素: dict[key] = value. 当key在字典中已经存在时,会修改对应key的value值。
- 删除元素: dict.pop(key). 删除指定key的元素,有返回值,返回对应key的value值。
- 删除元素: del dict[key], 删除指定key的元素
- 删除字典内所有元素: dict.clear()
- 获取字典所有的键: dict.keys()
- 获取字典所有的value值:dict.values()
- 把字典dict2的键/值对更新到dict里: dict.update(dict2)
- 获取(键, 值) 元组数组: dict.items()
- 字典的遍历:
- 遍历字典所有的key
- 遍历字典所有的value
- 遍历字典的key和value
14.4 字典推导式
字典推导式是一种快速创建字典的方式,它的语法类似于列表推导式,使用一对大括号{}表示字典,其中每个键值对用冒号:分隔
字典推导式的一般语法形式为:
{key: value for key, value in iterable}
其中iterable是一个可迭代对象,如列表、元组、集合等。可以通过对iterable中的元素进行操作,生成键值对加入到新字典中。
案例:
- 从列表中创建字典,键为元素的索引,值为元素的值
- 将字典中的值转换为大写
作业相关的知识点补充(视频中未讲到的)
在python的字典中, 要判断字典中是否含有某一个key可以使用in:
dic = {
'name': '张三',
'age': 18
}
'name' in dic
# 返回True, 因为dic中含有'name'的key
'gender' in dic
#返回False, 因为dic中没有'gender'的key.