• 2.3.2 访问字典对象的数据


      字典中的每个元素表示一种映射关系或对应关系,根据提供的“键”作为下标就可以访问对应的“值”,如果字典中不存在这个“键”会抛出异常,例如:

     1 >>> adict = {'address': 'SDIBT', 'score': [98, 97], 'name': 'Dong', 'sex': 'male', 'age': 38}
     2 >>> 
     3 >>> adict['age']                 #指定的键存在,返回对应的值
     4 38
     5 >>> 
     6 >>> adict['nothing']             #指定的键不存在,抛出异常
     7 Traceback (most recent call last):
     8   File "<pyshell#286>", line 1, in <module>
     9     adict['nothing']             #指定的键不存在,抛出异常
    10 KeyError: 'nothing'
    11 >>> 
    12 >>> 
    13 >>> #作者又用了断言,后边会详细解释的
    14 >>> 
    15 >>> assert 'nothing' in adict,'Key "nothong" not in adict'
    16 Traceback (most recent call last):
    17   File "<pyshell#291>", line 1, in <module>
    18     assert 'nothing' in adict,'Key "nothong" not in adict'
    19 AssertionError: Key "nothong" not in adict
    20 >>> 

      

      为了避免程序运行时引发异常而导致崩溃,在使用下标的方式访问字典元素是,最好能配合条件判断或者异常处理结构,例如:

     1 >>> adict = {'score': [98, 97], 'name': 'Dong', 'sex': 'male', 'age': 38}
     2 >>> 
     3 
     4 >>> if 'Age' in adict:       #首先判断字典中是否存在指定的“键”
     5     print(adict['Age'])
     6 else:
     7     print('Not Exists.')
     8 
     9     
    10 Not Exists.
    11 >>> 
    12 
    13 #使用异常处理结构
    14 >>> try:
    15     print(adict['address'])
    16 except:
    17     print('Not Exists.')
    18 
    19     
    20 Not Exists.
    21 >>> 
    22 
    23 
    24 #上述方法虽然能够满足要求,但是代码显得非常啰嗦,更好的办法就是字典对象提供了一个get()方法用来返回指定“键”对应的“值”,更秒的是这个方法允许指定该键不存在是返回特定的“值”,例如
    25 >>> adict
    26 {'score': [98, 97], 'name': 'Dong', 'sex': 'male', 'age': 38}
    27 >>> 
    28 >>> adict.get('age')                     #如果字典中存在该“键”,则返回对应的“值”
    29 38
    30 >>> 
    31 >>> adict.get('nothing','Not Exists.')   #指定的键不存在时返回指定的默认值
    32 'Not Exists.'
    33 >>> 
    34 >>> 

      字典对象的 setdefault() 方法用于返回指定“键”对应的“值”,如果字典中不存在该“键”,就添加一个新元素并设置该“键”对应的“值”,例如:

     1 >>> adict
     2 {'score': [98, 97], 'name': 'Dong', 'sex': 'male', 'age': 38}
     3 >>> 
     4 >>> adict.setdefault('nothing','nothing')        #字典增加新元素
     5 'nothing'
     6 >>> 
     7 >>> adict
     8 {'score': [98, 97], 'name': 'Dong', 'nothing': 'nothing', 'sex': 'male', 'age': 38}
     9 >>> 
    10 >>> adict.setdefault('age')
    11 38
    12 >>> 

      最后,当对字典对象进行迭代时,默认是遍历字典的“建”,这一点必须清醒地记在那资历。当然,可以使用字典对象的items()方法返回字典中的元素,即所有“键:值”对,字典对象的keys()方法返回所有“键”,values()方法返回所有“值”。例如

     1 >>> for item in adict.items():  #明确指定遍历字典的元素
     2     print(item)
     3 
     4     
     5 ('score', [98, 97])
     6 ('name', 'Dong')
     7 ('nothing', 'nothing')
     8 ('sex', 'male')
     9 ('age', 38)
    10 >>> 
    11 >>> 
    12 >>> adict.items()
    13 dict_items([('score', [98, 97]), ('name', 'Dong'), ('nothing', 'nothing'), ('sex', 'male'), ('age', 38)])
    14 >>> 
    15 >>> adict.keys()
    16 dict_keys(['score', 'name', 'nothing', 'sex', 'age'])
    17 >>> 
    18 >>> adict.values()
    19 dict_values([[98, 97], 'Dong', 'nothing', 'male', 38])
    20 >>> 

      

      小提示:内置函数len()、max()、min()、sum()、sorted()以及成员测试运算符in也适用于字典对象,但默认是用作用字典的“键”。若想作用于元素,即“键:值”对,则需要使用字典对象的items()方法明确指定;若想作用于“值”,则需要使用values()明确指定。

  • 相关阅读:
    vue.js多选列表(绑定到一个数组)
    vue.js选择列表
    vue.js单选按钮
    Vue.js逆转消息
    TTL
    [转]为何需要调用“super viewDidLoad
    Tomcat 发布war包提示war包超出大小修改
    【转】 MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?
    【转】 #1451
    【转】互联网网页响应速度测试标准
  • 原文地址:https://www.cnblogs.com/avention/p/8545205.html
Copyright © 2020-2023  润新知