字典

每个人做事都会有目标,比如出门开车不会漫无目的的在路上瞎转悠,就算是晚饭后的散步,也会有大致的目标范围(心里有个时间限制或者某个公园为目的,再或者走哪条路转一圈绕回来),可是当自己具体到每天学习时,却会迷失方向和目标

自己想到的针对办法是每天晚上回想和反思当天的内容自己会了哪些,没学会哪些,早上确认一下自己的目标和当天具体学习内容

01 今日内容大纲

  • 字典的初识

  • 字典的使用(增删改查)

  • 字典的嵌套

02 内容回顾以及作业讲解

  • 列表:容器型数据类型,可以承载大量的数据,有序的数据。

    • 增:

      • append 追加

      • insert 插入

      • extend 迭代着追加

    • 删:

      • pop 按照索引删除。有返回值,默认删除最后一个

      • remove 按照元素删除

      • clear 清空

      • del 索引,切片(步长)

    • 改:

      • l1[1] = '大壮'

      • l1[1:3] = 'fdsafdsafdhsjkf'

      • l1[1:4:2] = '太白'

    • 查:索引,切片,for循环

  • 元组:只读列表,(), 拆包

  • range:看做:可以自己控制范围的数字列表,但是它不是列表。

  •  

03 具体内容

  • 字典的初识:

    • why:

      • 列表可以存储大量的数据,数据之间的关联性不强

        • ['太白', 18, '男', '大壮', 3, '男']

      • 列表的查询速度比较慢。

    • what:容器型数据类型:dict。

    • how:

      • 数据类型的分类(可变与不可变):

        • 可变(不可哈希)的数据类型:list dict set

        • 不可变(可哈希)的数据类型: str bool int tuple

      • 字典:{}括起来,以键值对形式存储的容器型数据类型:

        • 1  dic = {'太白':
          2       {'name': '太白金星','age': 18, 'sex': ''},
          3   'python22期': 
          4       ['朱光亚', '大壮', '雪飞', '岑哥'],
          5   }
      • 键必须是不可变的数据类型:int , str (bool tuple几乎不用) 唯一的。

      • 值可以是任意数据类型,对象。

      • 字典3.5x版本之前(包括3.5)是无序的。

      • 字典3.6x会按照初次建立字典的顺序排列,学术上不认为是有序的。

      • 字典3.7x以后都是有序的。

      • 字典的优点:查询速度非常快,存储关联性的数据。

      • 字典的缺点:以空间换时间。

    • 字典的创建方式:

      •  1  # 面试会考
         2  # 方式一:
         3  # dic = dict((('one', 1), ('two', 2), ('three', 3)))
         4  # print(dic)  # {'one': 1, 'two': 2, 'three': 3}
         5  6  # 方式二:
         7  # dic = dict(one=1, two=2, three=3)
         8  # print(dic)
         9 10  # 方式三:
        11  # dic = dict({'one': 1, 'two': 2, 'three': 3})
        12  # print(dic)
    • 验证字典的合法性:

      1  dic = {[1,2,3]: 'alex', 1: 666}  # 键要不可变的数据类型
      2  print(dic)
      3  dic = {1: 'alex', 1: '太白', 2: 'wusir'}  # 键要唯一
      4  print(dic)
    • 字典的增删改查

       1  dic = {'name': '太白', 'age': 18, 'hobby_list': ['直男', '钢管', '开车']}
       2  # 增:
       3  # 直接增加 有则改之,无则增加
       4  # dic['sex'] = ''
       5  # dic['age'] = 23  # 改
       6  # print(dic)
       7  # setdefault  有则不变,无则增加
       8  # dic.setdefault('hobby')
       9  # dic.setdefault('hobby', '球类运动')
      10  # dic.setdefault('age', 45)
      11  # print(dic)
      12 13  # 删
      14  # pop 按照键删除键值对, 有返回值  ***
      15  # 设置第二个参数则无论字典中有无此键都不会报错
      16  # dic.pop('age')
      17  # ret = dic.pop('age')
      18  # ret = dic.pop('hobby','没有此键')
      19  # print(ret)
      20  # print(dic)
      21 22  # clear  清空  **
      23  # dic.clear()
      24  # print(dic)
      25 26  # del  **
      27  # # del dic['age']
      28  # del dic['age1']
      29  # print(dic)
      30 31 32  # 改
      33  # dic['name'] = 'alex'
      34  # print(dic)
      35 36  # 查
      37  # print(dic['hobby_list'])
      38  # print(dic['hobby_list1'])
      39 40  # get  ***
      41  # l1 = dic.get('hobby_list')
      42  # l1 = dic.get('hobby_list1','没有此键sb')  # 可以设置返回值
      43  # print(l1)
      44 45  # 三个特殊的
      46  # keys() values() items()
      47  # print(dic.keys(),type(dic.keys()))
      48  # 可以转化成列表
      49  # print(list(dic.keys()))
      50  # for key in dic.keys():
      51  #     print(key)
      52  # for key in dic:
      53  #     print(key)
      54 55 56  # values()
      57  # print(dic.values())
      58  # print(list(dic.values()))
      59  # for value in dic.values():
      60  #     print(value)
      61 62 63  # items()
      64  # print(dic.items())
      65  # for key,value in dic.items():
      66  #     print(key,value)
      67  # a,b = ('name', '太白')
      68  # print(a,b)
      69  # 面试题
      70  # a = 18
      71  # b = 12
      72  # a,b = b,a
      73  # # a,b = 12,18
      74  # print(a,b)

       

      相关练习题:

       1  dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
       2  # 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
       3  # 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
       4  # 请在k3对应的值中追加一个元素 44,输出修改后的字典
       5  # print(dic['k3'])
       6  # l1 = dic.get('k3')
       7  # print(l1)
       8  # dic.get('k3').append(44)
       9  # print(dic)
      10  # 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
    • 字典的嵌套

       1  dic = {
       2      'name': '汪峰',
       3      'age': 48,
       4      'wife': [{'name': '国际章', 'age': 38},],
       5      'children': {'girl_first': '小苹果','girl_second': '小怡','girl_three': '顶顶'}
       6  }
       7  8  # 1. 获取汪峰的名字。
       9  #
      10  # 2.获取这个字典:{'name':'国际章','age':38}。
      11  #
      12  # 3. 获取汪峰妻子的名字。
      13 14  # 4. 获取汪峰的第三个孩子名字。

       

04 今日总结

  • 字典:查询速度快,数据的关联性强。

    • 键不可变得数据类型,(str int),唯一。

    • 值:任意数据类型,对象。

    • 增删改查(全部都要会默写)***

    • 字典的嵌套。***

05 明日预习内容

  • 明天讲理论性偏多:id is == 小数据池,集合。

原文地址:https://www.cnblogs.com/zhangxiangning/p/10205404.html