字典dict
字典 dict
引题
列表表达一组概念,例如student_name_list = [‘小明’,‘小红’,‘小青’]
在表达一个对象不同属性 例如name ‘小明’ age 10 sex ‘男’ height 160 不太擅长。
列表vs字典
很多时候可以通用
列表:每一项都是一类东西。(不重要)项数不多。(不重要)占用资源稍微少 适合用列表。
有下标,有顺序的。
字典:一个对象事务的不同属性。(不重要)项数比较多。(不重要)占用资源稍多。适合字典。
依赖键名访问,无顺序的。
创建
大括号括住, 逗号分隔项,每一项是键值对 键:值,键名一般是字符串类型。
(了解: 其它语言也有键值对这种结构,map)
- (常用)创建一个非空字典
stu1_dict = {'name':'小明','age':10, 'sex':'男', 'height':160}`在这里插入代码片
- 创建一个空字典
dict1 = {}
- 类实例化创建
stu_xiaoming_dict = dict()
stu_xiaoming_dict → {}
stu_xiaoming_dict = dict(name='小明', age=10)
stu_xiaoming_dict → {'name': '小明', 'age': 10}
访问
- (常用)通过键访问值,字典对象[键]
stu_dict = {'name': '小明', 'age': 10}
stu_dict['name'] → '小明'
找不到键名会报错,错误反应严重,适合严谨的情况。
2. 对象.get(键名, 默认值=None)
stu_dict.get('name') → '小明'
stu_dict.get('height', 0) → 0
找不到键名不会报错,会返回默认值,适合事先知道数据可能取不到,需要赋默认值的情况。不太严谨。
3. 可能的错误:stu_dict['height']
报错键错误 :KeyError: 'height'
其它常用方法
- 所有项的值。遍历(不太常用,有时需求会用到)
字典对象.values() 返回值组成的列表.
stu_dict = {'name': '小明', 'age': 10}
stu_dict.values() → dict_values(['小明', 10])
- 所有项的键
字典对象.keys() 返回键组成的列表
stu_dict.keys() → dict_keys(['name', 'age'])
- 获取所有项
字典对象.items() → [('name', '小明'), ('age', 10)]
添加
- (常用)对象[新键] = 新值
stu_dict['sex'] = 'male'
- 声明一个非空字典时用变量去拼
new_value = 160
stu_dict = {'name': '小明', 'age': 10, 'sex': 'male', 'height': new_value}
等同于stu_dict = dict(name='
- [ ] List item
小明', age=10, height=new_value)
更新
- (常用)字典对象[键名] = 新值
stu_dict['name'] = '小红'
stu_dict → {'name': '小红', 'age': 10}
- 字典对象.update(key1=value1, key2=value2, …)
stu_dict.update(name='小李', age=12)
stu_dict → {'name': '小李', 'age': 12}
(了解:内存原理: 键名映射指向了新的值,哈希表,字典查询效率比较高)
删除(不太常用)
- 把值更新成默认值或None
stu_dict = {'name': '小明', 'age': 10}
stu_dict['name'] = None
- 字典对象.pop(键) ,删除键值对,删除成功后返回键对应的值。
stu_dict.pop('name') → '小明'
stu_dict → {'age': 10}
- del 关键字
del stu_dict['name']
stu_dict.clear() → {}
嵌套
列表,字典可以根据需求相互嵌套。
- 列表套列表。
字典对象.items() 返回值类似与 [[‘name’, ‘小明’], [‘age’, 10]]
二维数组、矩阵。 [[1,2,3],[4,5,6],[7,8,9]] - (常见)列表套字典
students = [{'name': '小明', 'age':10, 'sex':'male'},
{'name':'小红', 'age':12, 'sex':'female'},
{'name':'小李', 'age':12, 'sex':'male'}
]
- 字典套列表
接口上常见,比如天气预报接口。
weather_info = {
'success': ok,
'status_code': 200,
'city_list': [
{'name':'郑州', 'temp':'28', 'wet': 30},
{'name':'洛阳', 'temp':'25', 'wet': 40}
]
}