• python-(4-4)数据类型的应用(字典)


    1.定义

    字典是以键值对的形式存储数据{key1:value1, key2:value2}

    与列表查询数据相似,只不过将索引换成了key

    在这里插入图片描述
    字典的key必须是可哈希的数据类型,即不可变。
    字典的value可以是任何数据类型。

    2.增删改查

    1.增加和修改元素

    创建空字典,添加新元素

    dic = dict()
    dic["篮球"] = "NBA"
    dic["公牛队"] = "乔丹"
    print(dic)
    
    • 1
    • 2
    • 3
    • 4

    就可以得到字典的内容:{'篮球': 'NBA', '公牛队': '乔丹'}

    如果想要修改公牛队对应的值,直接替换即可

    dic["公牛队"] = "罗德曼"
    print(dic)
    
    • 1
    • 2

    可以得到修改后的字典数据:{'篮球': 'NBA', '公牛队': '罗德曼'}

    添加元素除了上述方法,还可以用其他操作:

    dic.setdefault("FMVP", "詹姆斯")
    
    • 1

    最终会添加新的键值对:{'篮球': 'NBA', '公牛队': '罗德曼', 'FMVP': '詹姆斯'}
    但要注意的是,这个方法只能用来创建新的键值对,而不能修改原来key对应的value
    此处setdefault的意思是设置默认值,仅针对还未创建的键值,表示新建的元素。

    在这里插入图片描述

    2-1 删除元素

    存在数据:dic = {'篮球': 'NBA', '公牛队': '罗德曼', 'FMVP': '詹姆斯'}
    删除'篮球': 'NBA',

    dic.pop('篮球')
    
    • 1

    删除key即可

    2-2 循环删除元素

    存在数据:dict = { "张三": "MVP", "李四": "FMVP", "张五": "DPOY", "王六": "AMVP" }

    需求:批量删除姓张的键值对

    # 存在的数据
    dict = {
        "张三": "MVP",
        "李四": "FMVP",
        "张五": "DPOY",
        "王六": "AMVP"
    }
    
    # 空的临时列表,存储即将删除的姓张的人名"key"
    tmp = []
    
    # 遍历字典的所有key
    for key in dict:
    
        # 如果key是姓张的
        if key.startswith("张"):
    
            # 将姓张的key存储在临时列表tmp中
            tmp.append(key)
    
    # 遍历临时列表,里面都是姓张的key
    for name in tmp:
    
        # 删除字典中姓张的key和value
        dict.pop(name)
    
    # 打印结果
    print(dict)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    3.查询元素

    方法一:
    直接通过字典的key就可以查询对应的键值

    print(dic['公牛队'])
    
    • 1

    这种查询方法,如果查询的key不存在,程序会报错。
    确定key没问题,就可以用这种方法。

    方法二:

    print(dic.get('公牛队'))
    
    • 1

    这种查询方法,如果查询的key不存在,会返回None
    不确定key的时候,用此方法。

    补充说明,使用方法二,会给用户一个更好的体验,而不是直接报错。

    dic = {'篮球': 'NBA',
           '公牛队': '罗德曼',
           'FMVP': '詹姆斯'}
    
    name = input("请输入你要查询的东西:")
    out = dic.get(name)
    
    if out == None:
        print("没有这个结果...")
    else:
        print(out)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.循环遍历

    存在数据:dic = {'篮球': 'NBA', '公牛队': '罗德曼', 'FMVP': '詹姆斯'}

    我们使用for循环遍历字典时,默认查询得到的结果是key,而不是value

    将所有的key放在一个列表中

    在这里插入图片描述

    将所有的value放在一个列表中

    在这里插入图片描述

    直接拿到字典中的所有keyvalue

    在这里插入图片描述

    这个结果集展示了列表中包含的元组,为了得到更详细的keyvalue
    通过下列代码可以实现:

    dic = {'篮球': 'NBA',
           '公牛队': '罗德曼',
           'FMVP': '詹姆斯'}
    
    print(dic.items())
    for item in dic.items():
        key = item[0]
        value = item[1]
        print(key, value)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    由此可以得到keyvalue

    但上述代码有点繁琐,我们可以解构(解包)进行简化。(解构可以对列表和元组操作)
    由于已经知道dic.items()得到的是两个结果,可以一一对应,因此直接对item分解成keyvalue

    for key,value in dic.items():
        print(key, value)
    
    • 1
    • 2

    该代码的效果就像下图一样

    在这里插入图片描述

  • 相关阅读:
    【Windows安装RabbitMQ详细教程】
    【moodle】moodle dialog开发笔记 1
    VUE系列 --- 网络模块axios(三)
    Java进阶之路——从初级程序员到架构师,从小工到专家
    Stable Diffusion 模型下载:FenrisXL(芬里斯XL)
    Flex布局—固定定位+流式布局—主轴对齐—侧轴对齐—伸缩比
    使用dockerfile自定义Tomcat镜像
    加权迭代最小二乘法在线估计锂电池容量研究
    MySQL安装配置教程 (手把手保姆级安装)
    [论文评析]Single Image Haze Removal Using Dark Channel Prior
  • 原文地址:https://blog.csdn.net/oldboy1999/article/details/126687082