day5 字典

01 今日内容大纲

  • 字典的初识

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

  • 字典的嵌套

02 内容回顾以及作业讲解

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

    • 增:

      • append 追加(默认追加在最后)
      • insert 插入 (索引位置插入)
      • extend 迭代着追加 ()
    • 删:

      • pop (索引删除)默认删除最后一个 ,同时可以设置返回值

      • remove (元素删除)多个元素相同时,默认删除第一个

      • del :

        • 索引删除
        • 切片,步长删除
    • clear:清楚内容

    • 改:

      • 索引 = new字符串
  • 元组:只读列表 (), 元祖拆包

  • range : 看做可以 控制范围数字的列表 可迭代对象

03 具体内容

  • 字典的初识

    • why:

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

        • ['太白',18,'男','大壮',3,'男']
      • 列表的查询顺序相对比较慢

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

    • how:

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

        • 可变(不可哈希)的数据类性:list dict set
        • 不可变(哈希)的数据类型:str bool int tuple
      • 字典:{}括起来,以键值对形式储存的容器型数据类型

        dict = {'太白':
        		{'name':'太白之魔童降世','age':18,'sex':'男'},
        		'python22期':
        		{'太小白','太大白','小太白','小魔童'}
        		}
        
      • 键 key 必须是不可变的数据类型 str int ( bool tuple几乎不用)唯一的。

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

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

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

      • 字典在3.7x之后都是有序的

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

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

    • 字典的创建方式:

      # 方式一
      dic = dict((('one', 1),('two', 2),('three', 3)))
      print(dic)    # {'one': 1, 'two': 2, 'three': 3}
      
      # 方式二
      dic = dict(one=1, two=2, three=3)
      print(dic)
      
      # 方式三
      dic = dict({'one': 1, 'two': 2, 'three': 3})
      print(dic)
      
    • 验证字典的合法性:

      # 验证字典的合法性
      # dic = {[123]:'alex',1:222}            # 键要不可变的数据类型
      # print(dic)
      # dict = {1:'alex',1:'wusir',2:'nvshen'} # 键需唯一
      # print(dict)
      
    • 字典的增删改查

      # 通过键值对直接增加
      dic = {'name': '太白', 'age': 18}
      dic['weight'] = 75 # 没有weight这个键,就增加键值对
      print(dic) # {'name': '太白', 'age': 18, 'weight': 75}
      dic['name'] = 'barry' # 有name这个键,就成了字典的改值
      print(dic) # {'name': 'barry', 'age': 18, 'weight': 75}
      
      # setdefault
      dic = {'name': '太白', 'age': 18}
      dic.setdefault('height',175) # 没有height此键,则添加
      print(dic) # {'name': '太白', 'age': 18, 'height': 175}
      dic.setdefault('name','barry') # 有此键则不变
      print(dic) # {'name': '太白', 'age': 18, 'height': 175}
      #它有返回值
      dic = {'name': '太白', 'age': 18}
      ret = dic.setdefault('name')
      print(ret)  # 太白
      
      # pop 通过key删除字典的键值对,有返回值,可设置返回值。
      dic = {'name': '太白', 'age': 18}
      # ret = dic.pop('name')
      # print(ret,dic) # 太白 {'age': 18}
      ret1 = dic.pop('n',None)
      print(ret1,dic) # None {'name': '太白', 'age': 18}
      
      #popitem 3.5版本之前,popitem为随机删除,3.6之后为删除最后一个,有返回值
      dic = {'name': '太白', 'age': 18}
      ret = dic.popitem()
      print(ret,dic) # ('age', 18) {'name': '太白'}
      
      #clear 清空字典
      dic = {'name': '太白', 'age': 18}
      dic.clear()
      print(dic) # {}
      
      # del
      # 通过键删除键值对
      dic = {'name': '太白', 'age': 18}
      del dic['name']
      print(dic) # {'age': 18}
      #删除整个字典
      del dic
      
      # 通过键值对直接改
      dic = {'name': '太白', 'age': 18}
      dic['name'] = 'barry'
      print(dic) # {'name': 'barry', 'age': 18}
      
      # update
      dic = {'name': '太白', 'age': 18}
      dic.update(sex='男', height=175)
      print(dic) # {'name': '太白', 'age': 18, 'sex': '男', 'height': 175}
      
      dic = {'name': '太白', 'age': 18}
      dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')])
      print(dic) # {'name': '太白', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'}
      
      dic1 = {"name":"jin","age":18,"sex":"male"}
      dic2 = {"name":"alex","weight":75}
      dic1.update(dic2)
      print(dic1) # {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75}
      print(dic2) # {'name': 'alex', 'weight': 75} 
      
      # 通过键查询
      # 直接dic[key](没有此键会报错)
      dic = {'name': '太白', 'age': 18}
      print(dic['name']) # 太白
      
      # get
      dic = {'name': '太白', 'age': 18}
      v = dic.get('name')
      print(v) # '太白'
      v = dic.get('name1')
      print(v) # None
      v = dic.get('name2','没有此键')
      print(v) # 没有此键 
      
      
      keys()
      dic = {'name': '太白', 'age': 18}
      print(dic.keys()) # dict_keys(['name', 'age']) 
      
      values()
      dic = {'name': '太白', 'age': 18}
      print(dic.values()) # dict_values(['太白', 18])
      
      items()
      dic = {'name': '太白', 'age': 18}
      print(dic.items()) # dict_items([('name', '太白'), ('age', 18)])
      

04 今日总结

  • 字典:查询速度快,数据关联性强
    • 键不可变的数据类型(str int )唯一 元组和bool基本不见
    • 值:任意数据类型,对象
    • 增删改查******重点
    • 字典的嵌套**重点

posted @ 2020-09-28 10:21  太白之魔童降世  阅读(86)  评论(0编辑  收藏  举报