自学内容网 自学内容网

43 字典元素的访问

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

x = {'age': 20, 'score': [98, 86], 'name': 'Danny', 'sex': 'female'}
print(x['age'])  # 指定的“键”存在,返回对应的“值”
# print(x['address'])  # 指定的“键”不存在,抛出异常, KeyError: 'address'

在这里插入图片描述

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

x = {'age': 20, 'score': [98, 86], 'name': 'Danny', 'sex': 'female'}

if 'Age' in x:
    print(x['Age'])
else:
    print('not exists.')

try:
    print(x['address'])
except:
    print('Not Exists.')

在这里插入图片描述

② 字典对象提供了一个 get() 方法来返回指定 “键” 对应的 “值”,并且允许指定该键不存在时返回特定的 “值”。

x = {'age': 20, 'score': [98, 86], 'name': 'Danny', 'sex': 'female'}
print(x.get('name'))  # 如果字典中存在该“键”,则返回对应的值
print(x.get('address', 'not exists'))  # 指定的“键”不存在时返回指定的默认值

import string, random

x = string.ascii_letters + string.digits
print(x)
y = ''.join((random.choice(x) for i in range(1000)))  # 生成1000个随机字符
z = dict()
for i in y:  # 遍历字符串,统计频次
    z[i] = z.get(i, 0) + 1
# for k, v in sorted(z.items()):  # 查看统计结果
#     print(k, ':', v)
print(sorted(z.items()))

x = 'effgggff'
y = {}
for i in x:
    y[i] = y.get(i, 0) + 1
print(y)

x = {}
print(x.get('g', 0))
x['g'] = x.get('g', 0) + 1
print(x)

在这里插入图片描述

③ 字典对象的 setfault() 方法用于返回指定 “键” 对应的 “值”,如果字典不存在该 “键”,就添加一个新元素并设置该 “键” 对应的 “值”(默认为 None)。

x = {'age': 20, 'score': [98, 86], 'name': 'Danny', 'sex': 'female'}
print(x.setdefault('address', 'moon'))  # 增加新元素
print(x)

在这里插入图片描述

对字典对象直接进行迭代或者遍历时默认是遍历字典的 “键”,如果需要遍历字典的元素必须使用字典对象的 items() 方法明确说明,如果需要遍历字典的 “值” 则必须使用字典对象的 values() 方法明确说明。当使用 len()、max()、min()、sum()、sorted()、enumerate()、map()、filter() 等内置函数以及成员测试运算符 in 对字典对象进行操作时,也遵循同样的约定。

x = {'age': 20, 'score': [98, 86], 'name': 'Danny', 'sex': 'female'}
for i in x:  # 默认遍历字典的键
    print(i, end=' ')
print('')
for i in x.items():  # 明确指定遍历字典的元素
    print(i, end=' ')
print('')
print(x.items(), type(x.items()))
print(x.keys(), type(x.keys()))
print(x.values(), type(x.values()))

在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_45782832/article/details/140854298

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!