• (04)-Python3之--字典(dict)操作


    1.定义

    字典的关键字:dict

    字典由多个键和其对应的值构成的 键—值 对组成,每个键值对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中。

    {key1:value1,key2:value2,key3:value3}

    在一个字典中:

      key的值是固定不变的,可以是字符串、数字、布尔值、元组。且key的值必须要唯一。

      value的值可以是任意类型。

      字典中的键值对是无序的,不存在索引概念。

    例如:my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}

    2.字典的查询

    读取字典当中的数据。根据key来读取值

    语法:字典变量名[key]

    例如:

    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    hobby = my_info["hobby"]
    print(hobby)
    
    结果:
    旅游

    3.字典的新增

    如果要为 dict 添加 key-value 对,只需为不存在的 key 赋值即可。

    语法:字典变量名[新的key] = new_value

    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    my_info["cation"] = "魔道祖师"
    print(my_info)
    
    结果:
    {'city': '杭州', 'cation': '魔道祖师', 'name': '测试小白', 'hobby': '旅游', 'sex': 'male'}

    4.字典的修改

    对 dict 中存在的 key-value 对赋值,新赋的 value 就会覆盖原有的 value,这样即可改变 dict 中的 key-value 对。

    语法:字典变量名[已有的key] = new_value

    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    my_info["hobby"] = "游泳,吃小龙虾"
    print(my_info)
    
    结果:
    {'city': '杭州', 'name': '测试小白', 'hobby': '游泳,吃小龙虾', 'sex': 'male'}

    5.字典的删除

    删除一个字典用del命令或者pop来删除。

    del语法:del 字典变量名[key]

    pop语法:字典变量名.pop(key)

    例如:

    # del 字典变量名[key]
    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    del my_info["city"]
    print(my_info)
    
    # 字典变量名.pop(key)
    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    my_info.pop("hobby")
    print(my_info)
    
    结果:
    {'hobby': '旅游', 'sex': 'male', 'name': '测试小白'}
    {'city': '杭州', 'sex': 'male', 'name': '测试小白'}

    6.字典和json格式互转

    json.loads(json_str) json字符串转换成字典
    json.dumps(dict) 字典转换成json字符串
    import json
    
    # 定义一个字典结构的数据
    data = {
        'name': 'Bill',
        'info': {'sex': 'male', 'age': 29, 'birth': '19900506'}
    }
    
    # 将字典转换为json格式
    data_json = json.dumps(data)
    
    # 查看json格式数据
    print(data_json)
    print('json数据的格式为:',type(data_json))
    
    # 将json转换为字典
    data_dict = json.loads(data_json)
    
    # 查看字典数据
    print(data_dict)
    print('字典数据的格式为:',type(data_dict))
    
    结果:
    {"name": "Bill", "info": {"sex": "male", "age": 29, "birth": "19900506"}}
    json数据的格式为: <class 'str'>
    {'name': 'Bill', 'info': {'sex': 'male', 'age': 29, 'birth': '19900506'}}
    字典数据的格式为: <class 'dict'>

    7.清空字典clear()方法

    clear() 用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典。

    语法:字典变量名.clear()

    例如:

    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    my_info.clear()
    print(my_info)
    
    结果:
    {}

    8.字典的get()方法

    get() 方法其实就是根据 key 来获取 value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;

    但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。

    例如:

    正常获取value值

    # 正常获取value值
    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    print(my_info.get('name'))
    
    结果:
    测试小白

    获取不存在的key的value值

    # 正常获取value值
    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    print(my_info.get('name1'))
    
    结果:
    None

    不使用get获取不存在的key的value值

    # 正常获取value值
    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    print(my_info['name1'])
    
    结果:
    KeyError: 'name1'

    9.字典的update()方法

    update() 方法可使用一个字典所包含的 key-value 对来更新己有的字典。在执行 update() 方法时,如果被更新的字典中己包含对应的 key-value 对,那么原 value 会被覆盖;

    如果被更新的字典中不包含对应的 key-value 对,则该 key-value 对被添加进去。

    例如:

    my_info = {"name":"测试小白", "sex":"male", "city":"杭州", "hobby":"旅游"}
    my_info.update({'age':18, 'city':"北京"})
    print(my_info)
    
    结果:
    {'sex': 'male', 'age': 18, 'name': '测试小白', 'hobby': '旅游', 'city': '北京'}

    10.字典的items()、keys()、values()方法

    items()、keys()、values() 分别用于获取字典中的所有 key-value 对、所有 key、所有 value。这三个方法依次返回 dict_items、dict_keys 和 dict_values 对象,Python 不希望用户直接操作这几个方法,但可通过 list() 函数把它们转换成列表。

    例如:

    my_info = {"name": "测试小白", "sex": "male", "city": "杭州", "hobby": "旅游", 'age': 18}
    # 获取字典所有的key-value对,返回一个dict_items对象
    ims = my_info.items()
    # 将dict_items转换成列表
    list_ims = list(ims)
    print(list_ims)
    # 访问第2个key-value对
    print(list_ims[1])
    
    # 获取字典所有的key,返回一个dict_keys对象
    kys = my_info.keys()
    # 将dict_keys转换成列表
    list_kys = list(kys)
    print(list_kys)
    # 访问第2个key
    print(list_kys[1])
    
    # 获取字典所有的value,返回一个dict_values对象
    vals = my_info.values()
    # 将dict_values转换成列表
    list_vals = list(vals)
    print(list_vals)
    # 访问第2个value
    print(list(vals)[1])
    
    结果:
    [('sex', 'male'), ('hobby', '旅游'), ('city', '杭州'), ('age', 18), ('name', '测试小白')]
    ('hobby', '旅游')
    ['sex', 'hobby', 'city', 'age', 'name']
    hobby
    ['male', '旅游', '杭州', 18, '测试小白']
    旅游
  • 相关阅读:
    [Leetcode] Regular Expression Matching
    [Leetcode] Edit Distance
    计算机科学论文写作3-表、图、例子和其他类似的元素的使用
    计算机科学论文写作2-搜寻、阅读和引用文献
    灰度图与彩图的双边滤波
    opencv6.1-imgproc图像处理模块之平滑与形态学操作
    opencv5-objdetect之级联分类器
    opencv4-highgui之视频的输入和输出以及滚动条
    计算机科学论文写作1-引言
    lecture11-hopfiled网络与玻尔兹曼机
  • 原文地址:https://www.cnblogs.com/renshengruxi/p/11976932.html
Copyright © 2020-2023  润新知