day07-字典
用一个容器同时保存多个数据的时候的建议:
多个数据的意义相同 - 列表
多个数据的意义不同 - 字典
认识字典
- 字典(dict)
"""
1) 容器型数据类型
{} - 容器标志
元素 - 键值对, 逗号隔开{键1: 值1, 键2: 值2, ...}
2) 可变 - 增删改
3) 无序 - 不支持下标
4)元素要求:
a. 键: 不可变数据类型的数据; 唯一
b. 值: 没有要求
"""
字典的查操作
- 查单个(重要) - 获取单个值
"""
语法1: 字典[键] - 获取指定键对应的值, 键不存在时报错
语法2: 字典.get(键) - 获取指定键对应的值, 键不存在时返回空,不报错
语法3: 字典.get(键, 默认值) - 获取指定键对应的值, 键不存在时返回默认值,不报错
注意: 语法1 效率比 语法2 语法3 略高
"""
- 遍历
"""
语法1:
for key in dict:
循环体
语法2;
for value in dict.values():
循环体
语法3:
for key in dict.keys():
循环体
语法4:
for key, value in dict.items():
循环体
"""
字典的增删改
- 增, 改
"""
语法1: dict[key] = value - key不存在: 添加key: value
key存在: 修改key对应的 value
语法2: dict.setdefault(key, value) - key存在: 添加key: value
key不存在: 无效果
语法3: 字典.update(字典/可以用dict()转换为列表的其他序列) - 可增可改
"""
- 删
"""
1) del dict[key] - 删除指定key对应的key:value
2) dict.pop(key) - 取出指定key对应的value(必须给key, 否则报错)
"""
字典相关操作和方法
- 字典相关操作
in, not in, ==
"""
不支持: +, *, 比较大小
支持: 比较相等, in, not in
字典的in和not in判断的是是否存在指定的键
"""
- 字典相关函数
len, dict
- 字典转换为其他序列(如列表), 将字典的key作为列表的元素
dict(数据) - 将指定数据转换成字典
""" 字典.keys() - 获取所有的键, 返回键的序列 字典.values() - 获取所有的值, 返回值的序列 字典.items() - 获取所有键值对, 以二元组形式返回键值对序列 """
- 字典相关方法: 字典.方法()
字典.clear() - 清空字典
字典.copy() - 拷贝原字典, 返回新字典
字典.get()
字典…setdefault()
""" 字典.keys() - 获取所有的键, 返回键的序列 字典.values() - 获取所有的值, 返回值的序列 字典.items() - 获取所有键值对, 以二元组形式返回键值对序列 """
字典1.update(字典2) - 将字典2中所有的键值对都添加到字典1
""" 也可以实现改的功能, 同时可以进行类型转换后的增 """ print('--' * 10, '分割线', '--' * 10) dict1 = {'a': 10, 'b': 20, 'c': 30} dict1.update({'name': '张三', 'age': 35}) print(dict1) dict1.update([('d', 40), ('e', 50), ('a', 60)]) print(dict1)
字典推导式
"""
结构1: {表达式1: 表达式2 for 变量 in 序列}
结构2: {表达式1: 表达式2 for 变量 in 序列 if 条件语句}
"""