Day8-2 字典

二、字典

字典基础

  1. 什么是字典(dict)

    python提供的容器型数据类型,可变并且无序
    可变 - 支持元素的增删改
    无序 - 没有固定的位置,不支持下标操作

  2. 字面量和元素

    用{}括起来,里面有多个键值对,每个键值对用逗号隔开,每一个键值对是字典的元素
    {key1:value1, key2:value2, ···}
    键值对 - key:value;键值对必须成对出现,键值对脱离字典没有意义
    键 - 必须是不可变的,而且是唯一的。实际一般将字符串作为键
    值 - 可以使任意类型的数据

    注意,字典存储数据,实质是通过值来存储的。key是值对应的标签和获取值的方式

    dict1 = {}          #空字典
    print(type(dict1))
    
    dict1 = {'a': 100, 10:200, (1,2):456}       #key唯一且不可变
    print(dict1,type(dict1))
    
  3. 什么时候使用字典?

    多个没有相同意义的数据(需要区分)就使用字典。例如:保存一个人的不同信息
    什么时候使用列表:
    ​ 存储的多个数据是由相同意义的数据(不需要区分)就是用列表。例如:保存一个班的学生信息

    dict1 = {'name': '郭锐', 'age': 25, 'sex': '人妖', 'height': 170, 'weight': 45}
    print(dict1['age'])
    print(dict1.items())
    
    # 练习:声明一个变量,保存一个班的学生信息,每个学生需要保存  姓名  电话  年龄
    stuInfo1 = {'name': '郭锐', 'tel': 110, 'age': 88}
    stuInfo2 = {'name': '高龙伟', 'tel': 110, 'age': 24}
    stuInfo3 = {'name': '俞雷', 'tel': 110, 'age': 23}
    stuInfo4 = {'name': '赵一飞', 'tel': 110, 'age': 22}
    stuInfo5 = {'name': '李源', 'tel': 110, 'age': 24}
    stuInfo = [stuInfo1, stuInfo2, stuInfo3, stuInfo4, stuInfo5]
    print(stuInfo[0].keys())
    

    字典的增删改查

  1. 查(获取元素的值)

    注意:字典中的键值对单独拿出来没有意义

    • 字典[key] —— 获取key对应的值

      car = {'color': 'yellow', 'type': '跑车', 'price': '5000w'}
      print(car['color'])
      print(car['type'])
      print(car['price'])
      # 当key不存在的时候会报错KeyError
      
    • 字典.get(key) - 获取key对应的值 - key不存在的时候不会报错,并且取到一个默认值None
      字典.get(key,值1) - 获取key对应的值 - key不存在的时候报错,并且取到值1
      不支持切片

      print(car.get('type'))
      print(car.get('speed'))
      
      print(car.get('color', '红色'))
      print(car.get('speed', 0))
      
    • 遍历字典
      注意:直接通过for in 循环取到的是key

      dict1 = {'a': 100, 'b': 200, 'c': 300}
      # 遍历字典取到的是key (推荐使用)
      for key in dict1:
          # key
          print(key, end=':')
          # value
          print(dict1[key])
      # 遍历字典的values(),获取所有的值
      for value in dict1.values():
          print(value)
      
      # 遍历字典的items,直接获取key和value (不建议使用)
      for key, value in dict1.items():
          print(key, value)
      
  2. 增、改

    • 字典[key] = 值 -- 当key不存在时,就是添加键值对,key本身就存在时就是修改key对应的值

      movie = {'name': '喜羊羊与灰太狼', 'type': 'cartoon', 'time': '120min'}
      
      movie['评分'] = 7.9
      print(movie)
      movie['type'] = 'comedy'
      print(movie)
      
  3. 删除键值对

    • del 字典[key] - 删除字典中指定的key对应的键值对

    • 字典.pop(key) —— 取出字典中对应key的值

      del movie['time']
      print(movie)
      
      name = movie.pop('name')
      print(name)
      print(movie)
      

字典中的方法

  1. 比较运算

    ==,!=

    注意:哦按段两个字典是否相等,只看键值对是否一样,不管键值对顺序

    ​ 字典不支持>和<符号

    print({'a': 11, 'b': 22} == {'a': 11, 'b': 22})
    print({'a': 11, 'b': 22} == {'b': 22, 'a': 11})
    
    True
    True
    
  2. in / not in
    key in 字典
    key not in 字典 ------判断指定的key值是否存在于字典中

    dict1 = {'a':1 ,'z': 2, 'c':3}
    print('a' in dict1)
    print('d' not in dict1)
    

    3 .len(),max(),min(),sum()
    dict(数据) - 数据要求是序列,并且序列中的元素都是有两个元素的子序列

    # 获取字典中键值对的个数
    print(len(dict1))
    # 获取字典中key的最大值,min()一样
    print(max(dict1))
    #将序列转换为字典(字符串除外)
    print(sum(dict1.values()))
    print(dict([(1 ,2), (3 ,4)]))
    
    # 字典转列表/集合/元组 都是将字典中的key取出,作为对应的元素
    print(list(dict1))
    print(list(dict1.values()))
    
  3. 相关方法

    • 字典.clear() -- 清空字典
      注意:清空容器推荐使用clear操作,而不是重新赋一个空的容器
      只有容器本身不存在的时候用{}
      否则就用字典.clear()

    • 字典.copy() -- 复制字典中的元素产生一个新的字典
      ​ 直接赋值,修改其中一个元素,会影响另外一个
      ​ 拷贝赋值,会产生新的地址,赋值后相互不影响

    • dict.fromkeys(序列,值) -- 以序列中所有的元素为key,指定的值作为value

      new_dict = dict.fromkeys('abc', 10)
      print(new_dict)
      new_dict = dict.fromkeys(['name', 'age', 'sex'], '待定')
      print(new_dict)
      
  4. 字典.keys() - 将所有的key取出,并产生一个新的序列
    字典.values() - 将所有的value取出,产生一个新的序列
    字典.items() - 将所有的键值对取出,并且将每一个键值对作为一个元组,产生一个新的序列

  5. 字典.setdefault(key, value = None) - 当key不存在时,添加键值对 key:None
    字典.setdefault(key, value) - 当key不存在时,添加键值对 key:value
    当key存在的时候,不会修改当前值

  6. 字典1.update(字典2) - 将字典2中的键值对去更新字典1,如果字典2中的key,字典1中本身就存在就修改字典1中的key的value,如果key不存在,就添加

    dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 180}
    dict2.update({'height': 165, 'age':18})
    print(dict2)
    
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容