如何迭代动态对象?

时间:2015-07-28 20:55:28

标签: python dictionary

我有一些代码可以迭代字典的值。如果值满足特定条件,则将其从字典中删除。这些条件取决于字典中其他值的存在。这就是为什么我不想复制旧词典并删除,然后重新归属。

当我尝试运行它时,我得到一个错误,即在迭代时字典的大小发生了变化。 有没有办法迭代一个字典,允许它改变大小,以及键和值的存在,而它是迭代?

3 个答案:

答案 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}