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()))

在这里插入图片描述

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我还记得那天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值