字典循环时出错
#dic = {‘k1’: ‘太白’, ‘k2’: ‘barry’, ‘k3’: ‘白白’, ‘age’: 18}
将字典中键含有’k’元素的键值对删除。
#正常思路:先找出字典中所有的键,如果键中有k,则将含有’k’元素的键值对删除。
dic = {‘k1’: ‘太白’, ‘k2’: ‘barry’, ‘k3’: ‘白白’, ‘age’: 18}
for key in dic:
if ‘k’ in key:
dic.pop(key)
print(dic)
#此时,字典会直接报错,是RuntimeError: dictionary changed size during iteration,即为字典在循环迭代时,改变了大小。
#建立空列表,把字典中带k的键找出来放在列表里,遍历循环列表,只要出现在列表中的,字典中删除键对应的值
dic = {‘k1’: ‘太白’, ‘k2’: ‘barry’, ‘k3’: ‘白白’, ‘age’: 18}
l1 = []
for key in dic:
if ‘k’ in key:
l1.append(key)
print(l1) #[‘k1’, ‘k2’, ‘k3’]
for i in l1:
dic.pop(i)
print(dic) #{‘age’: 18}
#直接在取字典中的键时,直接list(dic.keys()),省一个for循环
dic = {‘k1’: ‘太白’, ‘k2’: ‘barry’, ‘k3’: ‘白白’, ‘age’: 18}
for key in list(dic.keys()): # [‘k1’, ‘k2’, ‘k3’,‘age’]
if ‘k’ in key:
dic.pop(key)
print(dic)