python学习:字典

学习问题:如何删除字典中的一类元素
题目:删除字典friends中年龄大于23的friend

一个个删除明显达不到考察的目的,所以刚开始我的想法是:利用循环遍历字典中的数值进行判断

friends = {
    'jialiang':23,
    'wangChen':24,
    'jiaMing':22,
    'wangJie':22,
    'yuQing':24,
    'wenZhen':23,
    'haoNan':25,
    'luYi':23,
    'boWen':23,
}
for n,y in friends.items():      #先用循环遍历字典
    if y >= 23:                  #再用一个if来判断年龄大小
        del friends[n]           #接着删除符合年龄段的朋友
    else:                        
        print(f'{n}:{y}')        #再一个个输出

然而程序出现错误

  File "D:\pycharm\PyCharm Community Edition 2022.2.2\pythonProject\prctise.py", line 12, in <module>
    for n,y in friends.items():
RuntimeError: dictionary changed size during iteration

发现在for循环中不能改变字典

于是通过学习了两种解法:

1.通过列表
sc = []                             #创建一个空的列表
for n,y in friends.items():         
    if y >= 23:                     
        sc.append(n)                #将符合条件的y对应的n加入列表中
for a in sc:                        #再遍历列表
    del friends[a]                  #此时便可以对字典进行删除
2.通过新字典

(1)删除

t = {}
t.update(friends)
for n,y in friends.items():
    if y >= 23:
        del t[n]
friends = t

通过创建新字典,将旧字典赋值给字典,在遍历旧字典是对新字典进行删除,最后将新字典的新值赋给旧字典,就达到了对旧字典的删除。

(2)添加

t = {}
for n,y in friends.item():
    if y < 23:
        t[n] = y
friends = t

同样创建一个字典,只不过变成了加入元素,而不是删除。

最后代码如下:

friends = {
    'jialiang':23,
    'wangChen':24,
    'jiaMing':22,
    'wangJie':22,
    'yuQing':24,
    'wenZhen':23,
    'haoNan':25,
    'luYi':23,
    'boWen':23,
}
print("输出朋友的名字和年龄:")
for n,y in friends.items():
    print(f'{n}:{y}')

print("\n输出朋友的名字:")
for n in friends.keys():
    print(n)

print("\n输出朋友按字母排序的名字:")
for n in sorted(friends.keys()):
    print(n)

print("\n输出朋友的年龄:")
for y in friends.values():
    print(y)

print("\n去重年龄:")
for y in set(friends.values()):
    print(y)

print("\n插入xiaoMing:")
friends['xiaoMing'] = 18
for n,y in friends.items():
    print(f'{n}:{y}')
0
print("\n删去大于等于23岁的朋友:")
t = {}
t.update(friends)
for n,y in friends.items():
    if y >= 23:
        del t[n]
friends = t
for n,y in friends.items():
    print(f'{n}:{y}')

原文地址:http://www.cnblogs.com/102204216zxf/p/16823263.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性