15-字典

作者: ju7ran | 来源:发表于2019-04-01 16:03 被阅读0次

    字典

    Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!

    字典的key必须是不可变的对象,例如整数、字符串、bytes和元组,但使用最多的还是字符串。 列表、字典、集合等就不可以作为key。同时,同一个字典内的key必须是唯一的,但值则不必。

    字典可精确描述为不定长、可变、无序、散列的集合类型

    字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,例如:

    d = {key1 : value1, key2 : value2 }

    创建字典

    dict()函数是Python内置的创建字典的方法。

    test = {}       # 创建空字典
    test = {"a":'123','b':'2',"c":3}
    dict([('name', 'juran'), ('age', 18), ('addr', 'cs')])
    {'name': 'juran', 'age': 18, 'addr': 'cs'}
    
    dict(a=1, b=2, jack=4098)
    {'a':1,'b':2}
    

    访问字典

    字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。但是,与list类似,字典采用把相应的键放入方括号内获取对应值的方式取值。

    dic = {'Name': 'json','Age': 18}
    print ("dic['Name']: ", dic['Name'])
    print ("dic['Age']: ", dic['Age'])
    如果访问字典里没有的键,会抛出异常:
    dic['address']
    Traceback (most recent call last):
      File "<pyshell#7>", line 1, in <module>
        dic["address"]
    KeyError: 'address'
    

    增加和修改

    增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个key只能对应一个值,所以,多次对一个key赋值,后面的值会把前面的值冲掉。

    dic = {'Name': 'json','Age': 18}
    dic["address"] = "beijing"
    dic["address"] = "Shanghai"
    dic["Age"] = 20
    dic
    {'Name': 'json', 'Age': 20, 'address': 'Shanghai'}
    -------------------------------------
    要统计字典内键的个数,可以使用Python内置的len()函数:
    len(dic)
    3
    

    删除字典元素、清空字典和删除字典

    使用del关键字删除字典元素或者字典本身,使用字典的clear()方法清空字典

    dic
    {'Name': 'json', 'Age': 20, 'address': 'Shanghai'}
    del dic['Name']     # 删除指定的键
    dic
    {'Age': 20, 'address': 'Shanghai'}
    -------------------------------------
    a = dic.pop('Age')       # 弹出并返回指定的键。必须提供参数!
    
    20
    dic.clear()       # 清空字典
    del dic           # 删除字典本身
    

    字典的重要方法

    get(key)    返回指定键的值,如果值不在字典中,则返回default值
    items()     以列表返回可遍历的(键, 值) 元组对
    keys()  以列表返回字典所有的键
    values()    以列表返回字典所有的值
    

    接下来我们看看例子:

    dic = {'Name': 'json', 'Age': 20, 'address': 'Shanghai'}
    dic.get("sex")          # 访问不存在的key,没有报错
    dic['sex']              # 访问不存在的key,报错。
    Traceback (most recent call last):
      File "<pyshell#44>", line 1, in <module>
        dic["sex"]
    KeyError: 'sex'
    -------------------------------------
    dic.items()
    dict_items([('Name', 'json'), ('Age', 20), ('address', 'Shanghai')])
    -------------------------------------
    dic.values()
    dict_values(['json', 20, 'Shanghai'])
    -------------------------------------
    dic.keys()
    dict_keys(['Name', 'Age', 'address'])
    -------------------------------------
    dic.pop('Name')
    json
    

    遍历字典

    从Python3.6开始遍历字典获得的键值对是有序的

    Python2中的字典循环

    image.png

    Python3中的字典循环

    image.png

    字典的遍历

    dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}
    
    1  直接遍历字典获取键,根据键取值
    for key in dic:
        print(key, dic[key])
    
    2  利用items方法获取键值,速度很慢,少用!
    for key,value in dic.items():
        print(key,value)
    
    3  利用keys方法获取键
    for key in dic.keys():
        print(key, dic[key])
    
    4  利用values方法获取值,但无法获取对应的键。
    for value in dic.values():
        print(value) 
    

    相关文章

      网友评论

        本文标题:15-字典

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