问题:朋友年龄(字典删除问题)

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}')
posted @ 2022-10-24 22:19  牛鱼针  阅读(55)  评论(0)    收藏  举报