问题:朋友年龄(字典删除问题)
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}')
浙公网安备 33010602011771号