Python之第四天的努力--字典

1.字典

  • 容器型数据类型:dict

  • 数据类型分类:可变与不可变

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

    dic = {'zs':
            {'name':'zs','age':18,'sex':'男'},
        'ls':
            {'name':'ls','age':18,'sex':'女'}
     }
    
  • 键必须是不可变的数据类型 唯一的

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

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

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

  • 字典的创建方式:

    # 方式一
    # dic = dict((('one',1),('two',2),('three',3)))
    # print(dic)
    
    # 方式二
    # dic = dict(one=1,two=2,three=3)
    # print(dic)
    
    # 方式三
    # dic = dict({'one':1,'two':2,'three':3})
    # print(dic)
    
  • 字典的增删改查

    • dic = {'name':'zs','age':18}
      dic['sex'] = '男'
      print(dic)
      dic['age'] = 20   # 改掉了
      print(dic)
      # 有则改之  无则增加
      

      image-20200602152649442

      # setdefault
      dic = {'name':'zs','age':18}
      dic.setdefault('hobby','女')
      print(dic)
      dic.setdefault('age','20')
      print(dic)
      # 有则不变
      
    • # pop 按照键来删除键值对,有返回值
      # 设置第二个参数则无论字典中有无此键都不会报错
      dic = {'name':'zs','age':18}
      ret = dic.pop('age')   # 值
      print(ret)
      # dic.pop('age')
      print(dic)
      
      ret2 = dic.pop('hobby','没有此键')
      print(ret2)
      print(dic)
      

      image-20200602153708546

      # clear  清空
      dic = {'name':'zs','age':18}
      dic.clear()
      print(dic)
      

      image-20200602153833377

      # del
      dic = {'name':'zs','age':18}
      del dic['age']
      print(dic)
      

      image-20200602153957170

    • # 改
      dic = {'name':'zs','age':18}
      dic['name'] = 'ls'
      print(dic)
      

      image-20200602154150766

    • # 没有会报错
      dic = {'name':'zs','age':18,'hobby_list':['女','听歌','魔方']}
      print(dic['hobby_list'])
      

      image-20200602154452830

      # get   *****
      dic = {'name':'zs','age':18,'hobby_list':['女','听歌','魔方']}
      l1 = dic.get('hobby_list')
      print(l1)
      l2 = dic.get('hobby_list1','没有此键')  # 可以设置返回值
      print(l2)
      

      image-20200602154733347

      # keys()
      dic = {'name':'zs','age':18,'hobby_list':['女','听歌','魔方']}
      print(dic.keys())
      # 可以转化成列表
      print(list(dic.keys()))
      for key in dic.keys():
          print(key)
      

      image-20200602155128568

      # values()
      dic = {'name':'zs','age':18,'hobby_list':['女','听歌','魔方']}
      print(dic.values())
      print(list(dic.values()))
      for i in dic.values():
          print(i)
      

      image-20200602155335407

      # items()
      dic = {'name':'zs','age':18,'hobby_list':['女','听歌','魔方']}
      print(dic.items())
      print('\n')
      for i in dic.items():
          print(i)
      print('\n')
      # 拆包
      for a,b in dic.items():
          print(a,b)
      

      image-20200602155844291

    • # 练习
      dic = {'k1':'v1','k2':'v2','k3':[11,22,33]}
      # 请在字典中添加一个键值对   'k4':'v4',输出添加后的字典
      # 请在修改字典中'k1'对应的值为'hhh',输出修改后的字典
      # 请在k3对应的值中追加一个元素 44,输出修改后的字典
      # 请在k3对应的值的第一个位置插入元素 18,输出修改后的字典
      print(dic)
      dic.setdefault('k4','v4')
      print(dic)
      dic['k1'] = 'hhh'
      print(dic)
      dic.get('k3').append(44)
      print(dic)
      dic.get('k3').insert(0,18)
      print(dic)
      

      image-20200602161817894

  • 字典的嵌套

    dic = {
        'name':'汪峰',
        'age':48,
        'wife':[{'name':'国际章','age':38},],
        'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
    }
    
    # 获取汪峰的名字
    # 获取这个字典:{'name':'国际章','age':38}
    # 获取汪峰妻子的名字
    # 获取汪峰的第三个孩子的名字
    
    print(dic.get('name'))
    print(dic.get('wife')[0])
    print(dic.get('wife')[0].get('name'))
    print(dic.get('children').get('girl_three'))
    

    image-20200602163644377

posted @ 2020-06-02 16:39  ET-珩  阅读(83)  评论(0)    收藏  举报