美文网首页Python
Python基础-06字典

Python基础-06字典

作者: Surpassme | 来源:发表于2020-05-25 23:12 被阅读0次

    6.字典

        字典的主要特性如下所示:

    • 1.字典是使用大括号进行定义
    • 2.字典中的元素是键值对的形式出现,每个键值对之间使用冒号进行分隔,每个元素间使用逗号进行分隔
    • 3.字典中键必须为不可更改的数据类型,如整型数据、浮点数据、布尔型、字符型、元组等,但不能列表和变量

    6.1 基本使用

    1.添加

        直接给对应的键赋值即可

    d={}
    d["a"]=123
    # 输出结果
    {'a': 123}
    

    2.获取

        直接填写对应的键即可,但必须保证键存在

    d={'a': 123}
    d["a"]
    # 输出结果
    123
    

    3.更新
        与添加类似,重新赋值的过程便是更新

    d={'a': 123}
    d["a"]=456
    d
    # 输出结果
    {'a': 456}
    

    4.删除
        使用del,后面填写相应的键即可

    d={'a': 123}
    del d["a"]
    d
    # 输出结果
    {}
    

    6.2基本方法

        字典中常用的方法为三个:

    • keys():获取字典的键
    • values():获取字典的值
    • items():获取字典的元素,即键值对

        示例代码如下所示:

    d={
        "beijing":"beijing",
        "shanghai":"shanghai",
        "jiangsu":"nanjing",
        "zhejian":"hangzhou",
        "hubei":"wuhai",
    }
    
    print(f"获取字典的键:{d.keys()}")
    print(f"获取字典的值:{d.values()}")
    print(f"获取字典的键值对:{d.items()}")
    

    输出结果如下所示:

    获取字典的键:dict_keys(['beijing', 'shanghai', 'jiangsu', 'zhejian', 'hubei'])
    获取字典的值:dict_values(['beijing', 'shanghai', 'nanjing', 'hangzhou', 'wuhai'])
    获取字典的键值对:dict_items([('beijing', 'beijing'), ('shanghai', 'shanghai'), ('jiangsu', 'nanjing'), ('zhejian', 'hangzhou'), ('hubei', 'wuhai')])
    

    6.3常用方法

    • clear():清空字典中元素
    • get():获取指定键的值,如果未找到对应的键,则返回get指定的默认值,如果未指定默认值,则为None
    • setdefault():与get类似,区别在于如果给定的键不在字典,则进行添加键,其值为指定的值,未指定则默认为None,如果键存在,则不做任何操作
    • update():向字典中添加字典
    • pop():删除指定键值对
    • popitem():删除字典中最后的键值对,并返回删除的键值对元组形式
    • fromkeys():创建一个新字典,从指定的可迭代对象获取对应的键,值为字典对应的初始值,常为None

        示例代码如下所示:

    a=(1,2,3,4,5)
    
    d={
        "beijing":"beijing",
        "shanghai":"shanghai",
        "jiangsu":"nanjing",
        "zhejian":"hangzhou",
        "hubei":"wuhai",
    }
    
    ad={
        "abc":122,
        "def":123
    }
    print(f"使用get方法获取指定键(存在)的值:{d.get('beijing','Test')}")
    print(f"使用get方法获取指定键(不存在)的值:{d.get('surpass','Test')}")
    d.setdefault('beijing','beijingTest')
    print(f"使用setdefault方法获取指定键(存在)的值:{d}")
    d.setdefault('surpass','Test')
    print(f"使用setdefault方法获取指定键(不存在)的值:{d}")
    d.update(ad)
    print(f"使用update在字典添加字典:{d}")
    d.pop("abc")
    print(f"使用pop删除指定键的值:{d}")
    tmp=d.popitem()
    print(f"使用pop删除指定键的值:{d} 删除的元素为:{tmp}")
    d1=dict.fromkeys(a)
    print(f"使用fromkeys创建新的字典,并将可迭代元素的值做为键,其对应的值为初始值:{d1}")
    d2=dict.fromkeys(a,100)
    print(f"使用fromkeys创建新的字典,并将可迭代元素的值做为键,其对应的值为初始值:{d2}")
    

    输出结果如下所示:

    使用get方法获取指定键(存在)的值:beijing
    使用get方法获取指定键(不存在)的值:Test
    使用setdefault方法获取指定键(存在)的值:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai'}
    使用setdefault方法获取指定键(不存在)的值:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai', 'surpass': 'Test'}
    使用update在字典添加字典:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai', 'surpass': 'Test', 'abc': 122, 'def': 123}
    使用pop删除指定键的值:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai', 'surpass': 'Test', 'def': 123}
    使用pop删除指定键的值:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai', 'surpass': 'Test'} 删除的元素为:('def', 123)
    使用fromkeys创建新的字典,并将可迭代元素的值做为键,其对应的值为初始值:{1: None, 2: None, 3: None, 4: None, 5: None}
    使用fromkeys创建新的字典,并将可迭代元素的值做为键,其对应的值为初始值:{1: 100, 2: 100, 3: 100, 4: 100, 5: 100}
    

    6.4 字典键确定方法

        因为字典的键是不可更改的,那如何判断一个数据类型是否可更改呢?两种方法如下所示:

    • 使用id()方法:对一个数据类型进行一些操作,比较前后两个id()出来的结果是否一样,一样则代表可更改,不一样,则代表不可更改。
    • 使用hash()方法:使用hash()方法后,如果不报错,则表明可以被hash,即不可更改,否则则可更改
    s="abc"
    id(s)
    # 输出结果
    1536614318320
    s+="aa"
    id(s)
    # 输出结果
    1536635062128
    import hashlib
    hash("123")
    # 输出结果
    -7084025808549728804
    hash(["123"])
    # 输出结果
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    TypeError: unhashable type: 'list'
    

        以上示例表明字符是可以被hash的,可以做为字典的键,但列表却不行。

    6.5 优缺点

    • 优点:查找和插入速度快
    • 缺点:内存占用较大

    相关文章

      网友评论

        本文标题:Python基础-06字典

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