美文网首页python
py3笔记4:字典

py3笔记4:字典

作者: _百草_ | 来源:发表于2023-05-14 10:25 被阅读0次

    可变容器模型,可存储任意类型对象
    格式:{key1:value1,key2:value2}
    key:唯一、不可变(字符串、数字、tuple)
    :可以重复、类型任意

    1、创建字典

    # 创建
    empty_dict = {} # 空字典
    empty_dict2 = dict() # 空字典
    print(len(empty_dict))  # 0 # 长度,即字典元素个数,即键对的个数
    print(type(empty_dict2))  # <class 'dict'>  # 类型
    tiny_dict = {"name":"bai","name":"cao","age":10} # key重复,则仅后一个被记住
    print(tiny_dict)  # {'name': 'cao', 'age': 10}
    # tiny_dict = {[1,2]:1,{}:2} # key必须不可变,否则报错TypeError: unhashable type: 'list'
    # 浅复制:仅复制对象本身,对象内子对象仍是同一存储位置
    tiny_dict3 = tiny_dict.copy()
    print(id(tiny_dict),id(tiny_dict3))  # 1779435572608 1779440041536
    # 创建一个新字典
    tiny_dict4 = tiny_dict.fromkeys([1,2,3,4]) # 以序列作为字典的键,以val作为所有键值对的值,默认None
    print(tiny_dict4)  # {1: None, 2: None, 3: None, 4: None}
    tiny_dict4 = tiny_dict.fromkeys((1,2,3,3),"val") # 序列中重复元素会被踢除;注意key区分大小写
    print(tiny_dict4)  # {1: 'val', 2: 'val', 3: 'val'}
    

    2、访问

    # 访问
    tiny_dict = {"name":"bai","age":7,"Class":[1,2]}
    print(tiny_dict["name"])  # 使用dict[key]访问
    # print(tiny_dict["grade"]) # 没有则报错KeyError: 'grade'
    # 获取指定键
    print(tiny_dict.get("name")) # 返回指定键的值,若不在字典中,返回default(默认None)
    print(tiny_dict.get("grade", "default"))  # default
    # key in dict
    print("name"in tiny_dict) # 在返回True,不在返回False  # True
    for key in tiny_dict: # for循环访问,依次获取键
        print(key)  # name age Class
    # 键值对
    print(tiny_dict.items()) # dict_items([('name', 'bai'), ('age', 7), ('Class', [1, 2])])
    for k,v in tiny_dict.items(): # 支持for获取
        pass
    # 获取键
    print(tiny_dict.keys())  # dict_keys(['name', 'age', 'Class'])
    for k in tiny_dict.keys(): # 支持for获取
        pass
    # 获取值
    print(tiny_dict.values()) # dict_values(['bai', 7, [1, 2]])
    for v in tiny_dict.values():
        pass
    

    3、修改

    # 修改
    tiny_dict["age"] = 10  # 已有键,则更新值
    tiny_dict["grade"] = 100 # 无键,则新增键值对
    print(tiny_dict)  # {'name': 'bai', 'age': 10, 'Class': [1, 2], 'grade': 100}
    # 把另一字典的键值对更新到dict里
    tiny_dict5 = {"name":5,"no.":5}
    tiny_dict.update(tiny_dict5)  # 若键相同,则被覆盖
    print(tiny_dict) # {'name': 5, 'age': 10, 'Class': [1, 2], 'grade': 100, 'no.': 5}
    # 添加键值对
    tiny_dict5.setdefault("name",10)  # 已有的键,则不影响
    print(tiny_dict5)  # {'name': 5, 'no.': 5}
    tiny_dict5.setdefault("age")  # 不存在的键,则会添加;对应的值是default(默认None)
    print(tiny_dict5)  # {'name': 5, 'no.': 5, 'age': None}
    print("--------")
    

    4、删除

    # 删除
    del tiny_dict["Class"]  # 删除键Class
    print(tiny_dict)  # {'name': 'bai', 'age': 10, 'grade': 100}
    tiny_dict.clear() # 清空字典,即变为空字典
    print(tiny_dict)  # {}
    del tiny_dict  # 删除字典
    # print(tiny_dict)  # NameError: name 'tiny_dict' is not defined
    tiny_dict = {'name': 'bai', 'age': 10, 'Class': [1, 2], 'grade': 100}  # 已删除重新创建
    # 删除字典key对应的值,并返回被删除的值;若k不存在,则报错
    print(tiny_dict.pop("name"))  # bai
    print(tiny_dict) # {'age': 10, 'Class': [1, 2], 'grade': 100}
    # tiny_dict.pop("1")  # KeyError: '1'
    # 返回并删除字典中最后一对键值(tuple)
    print(tiny_dict.popitem())  # ('grade', 100)
    print(tiny_dict) # {'age': 10, 'Class': [1, 2]}
    

    5、内置函数

    # 内置
    tiny_str = str(tiny_dict)  # 转为字符串
    print(tiny_str,type(tiny_str))  # {'age': 10, 'Class': [1, 2]} <class 'str'>
    # 按顺序遍历字典中所有键
    print(sorted(tiny_dict5)) # ['age', 'name', 'no.']
    

    6、嵌套

    # 嵌套
    
    # 字典列表
    dict_list = [{"name":"men","age":11},
                 {"name": "bai", "age": 15},
                 {"name":"cao","age":20}]
    # 列表字典
    list_dict ={
        "name":["bai","cao","men"],
        "age":[15, 20,11]
    }
    # 字典字典
    dict_dict ={
        "bai":{"age":15,"Class":"Py"},
        "cao":{"age":20,"Class":"c"},
        "men":{"age":11,"Class":"java"}
    }
    

    7、参考

    1、Python3 字典
    2、Python3 字典
    3、Python3基础-字典

    相关文章

      网友评论

        本文标题:py3笔记4:字典

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