美文网首页
Day8-2 字典

Day8-2 字典

作者: ChiAo1fei | 来源:发表于2019-01-03 19:10 被阅读0次

    二、字典

    字典基础

    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)
      

    相关文章

      网友评论

          本文标题:Day8-2 字典

          本文链接:https://www.haomeiwen.com/subject/ceuqrqtx.html