我必须去掉所有有负值的条目。为什么我的代码不起作用?
dic = {'aa': 20, 'bb': -10, 'cc': -12}
for i in dic:
if dic[i] < 0:
del dic[i]
print(dic)
在运行这段代码时,我会得到一个异常:
RuntimeError:字典在迭代过程中更改大小
发布于 2013-12-06 02:07:06
您可以通过使用dict理解来完成这一任务。
dic = {k: v for (k, v) in dic.items() if v >= 0}
发布于 2013-12-06 00:02:21
这应该适用于Python2.x-用以下方式替换for循环
for i in dic.keys():
if dic[i]<0:
del dic[i]
这在Python3.x中不起作用的原因是keys
返回一个迭代器而不是列表--我在https://stackoverflow.com/a/11941855/2314737中找到了一个解释
很微妙的区别--我不知道。
因此,在Python3.x中,您需要使用
for i in list(dic):
发布于 2013-12-06 00:17:53
delete_list = []
for i in dic:
if dic[i] < 0:
delete_list.append(i)
for each in delete_list:
del dic[each]
https://stackoverflow.com/questions/20418851
复制相似问题