我有一些代码可以迭代字典的值。如果值满足特定条件,则将其从字典中删除。这些条件取决于字典中其他值的存在。这就是为什么我不想复制旧词典并删除,然后重新归属。
当我尝试运行它时,我得到一个错误,即在迭代时字典的大小发生了变化。 有没有办法迭代一个字典,允许它改变大小,以及键和值的存在,而它是迭代?
答案 0 :(得分:2)
构建一个新词典,其中包含您要保留的键。这可以通过字典理解或循环手册来完成。
这是一个理解:
return {k: v for k, v in my_dict.items() if some-condition}
这是一个手动循环:
result = {}
for k, v in my_dict.items():
if some-condition:
result[k] = v
return result
答案 1 :(得分:1)
嗯,是的,你可以通过密钥迭代(Python3)!看看:
>>> dc
{1: 'aze', 3: 'poi', 4: 'mlk'}
>>> dc = {1:"aze", 2:"qsd", 3:"poi", 4:"mlk"}
>>> dc
{1: 'aze', 2: 'qsd', 3: 'poi', 4: 'mlk'}
>>> keys = list(dc.keys())
>>> keys
[1, 2, 3, 4]
>>> for k in keys:
if "q" in dc[k]:
del dc[k]
>>> dc
{1: 'aze', 3: 'poi', 4: 'mlk'}
>>>
答案 2 :(得分:0)
您可以遍历键而不是字典本身。在以下示例中,将从dict中删除所有奇数编号的值:
>>> a = {'a': 12, 'b': 3, 'c': 14}
>>> for key in list(a.keys()):
if a[key] % 2 == 0:
del a[key]
>>> a
{'b': 3}