字典dict

字典 dict

字典dict

引题

列表表达一组概念,例如student_name_list = [‘小明’,‘小红’,‘小青’]
在表达一个对象不同属性 例如name ‘小明’ age 10 sex ‘男’ height 160 不太擅长。

列表vs字典

很多时候可以通用
列表:每一项都是一类东西。(不重要)项数不多。(不重要)占用资源稍微少 适合用列表。
有下标,有顺序的。
字典:一个对象事务的不同属性。(不重要)项数比较多。(不重要)占用资源稍多。适合字典。
依赖键名访问,无顺序的。

创建

大括号括住, 逗号分隔项,每一项是键值对 键:值,键名一般是字符串类型。
(了解: 其它语言也有键值对这种结构,map)

  1. (常用)创建一个非空字典
 stu1_dict = {'name':'小明','age':10, 'sex':'男', 'height':160}`在这里插入代码片
  1. 创建一个空字典
dict1 = {}
  1. 类实例化创建
 stu_xiaoming_dict = dict()
 stu_xiaoming_dict  →  {}
 stu_xiaoming_dict = dict(name='小明', age=10)
 stu_xiaoming_dict  →   {'name': '小明', 'age': 10}

访问

  1. (常用)通过键访问值,字典对象[键]
 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'

其它常用方法

  1. 所有项的值。遍历(不太常用,有时需求会用到)
    字典对象.values() 返回值组成的列表.
stu_dict = {'name': '小明', 'age': 10}
stu_dict.values() → dict_values(['小明', 10])
  1. 所有项的键
    字典对象.keys() 返回键组成的列表
stu_dict.keys() → dict_keys(['name', 'age'])
  1. 获取所有项
字典对象.items() →   [('name', '小明'), ('age', 10)]

添加

  1. (常用)对象[新键] = 新值
    stu_dict['sex'] = 'male'
  1. 声明一个非空字典时用变量去拼
new_value = 160
stu_dict = {'name': '小明', 'age': 10, 'sex': 'male', 'height': new_value}
等同于stu_dict = dict(name='

 - [ ] List item

小明', age=10, height=new_value)

更新

  1. (常用)字典对象[键名] = 新值
 stu_dict['name'] = '小红'
 stu_dict  → {'name': '小红', 'age': 10}

  1. 字典对象.update(key1=value1, key2=value2, …)
stu_dict.update(name='小李', age=12)
stu_dict  →  {'name': '小李', 'age': 12}

(了解:内存原理: 键名映射指向了新的值,哈希表,字典查询效率比较高)

删除(不太常用)

  1. 把值更新成默认值或None
 stu_dict = {'name': '小明', 'age': 10}
 stu_dict['name'] = None
  1. 字典对象.pop(键) ,删除键值对,删除成功后返回键对应的值。
stu_dict.pop('name')  → '小明'
stu_dict → {'age': 10}
  1. del 关键字
del stu_dict['name'] 
stu_dict.clear()  → {}  

嵌套

列表,字典可以根据需求相互嵌套。

  1. 列表套列表。
    字典对象.items() 返回值类似与 [[‘name’, ‘小明’], [‘age’, 10]]
    二维数组、矩阵。 [[1,2,3],[4,5,6],[7,8,9]]
  2. (常见)列表套字典
students = [{'name': '小明', 'age':10, 'sex':'male'},
            {'name':'小红', 'age':12, 'sex':'female'},
            {'name':'小李', 'age':12, 'sex':'male'}
            ]
  1. 字典套列表
    接口上常见,比如天气预报接口。
weather_info = {
    'success': ok, 
    'status_code': 200, 
    'city_list': [
                {'name':'郑州', 'temp':'28', 'wet': 30},
                {'name':'洛阳', 'temp':'25', 'wet': 40}
              ]
}

字典dict