循环遍历字典所有的键,怎样删除不符合要求的键?就不能执行删除,字典中途改变了。
拉勾网20170519根据“数据产品经理”关键字可以搜索到的职位。由于拉勾只展示符合搜索条件的前450个职位,为了获得更多的数据,设定不同的筛选条件分别爬取汇总,然后清洗了下,最后只剩下456个职位,296家公司。
回答:
可以使用字典的items()方法来循环遍历字典,并使用del语句来删除不符合要求的键。但是,在循环遍历字典时,要在新列表中记录需要删除的键,在循环结束后再统一删除字典中的键。这样可以保证程序的稳定性。
具体代码如下:
D = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
to_delete = [] # 新建一个列表,记录需要删除的键
for k,v in D.items(): # 循环遍历字典
if v < 3: # 不符合要求的键
to_delete.append(k) # 将需要删除的键添加到列表中
for k in to_delete: # 循环遍历需要删除的键
del D[k] # 从字典中删除键
print(D) # 输出删除后的字典
输出结果为:
{'c': 3, 'd': 4, 'e': 5}
字典里面的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不支持下标,后期无论数据如何变化,只需要按照对应的名字查找数据即可
可以製作一個暫時的 刪除表,做完全部的判定之後,根據表刪除。
在循环遍历字典时,如果删除本字典中的项,字典就变了,遍历受影响。可以使用字典的copy()方法创建字典的副本,然后遍历这个副本的key,再从原字典删除。删除使用del:del d[key]