在迭代

时间:2015-11-10 23:16:26

标签: python python-2.7

在迭代dict时允许哪些操作?

  

在字典中添加或删除条目时使用iteritems()可能会引发RuntimeError或无法迭代所有条目。   (https://docs.python.org/2/library/stdtypes.html#dict.iteritems

即使这会改变字典的大小,也可以更改现有值吗? 例如,当我遍历键[1,2]可以

  • 将[1] [11] [111] [" data1"]的值更改为" one"。
  • 完全删除[1] [11]?
  • 添加[1] ["十一"] = {...}

如果不允许这样做,最佳做法是什么?我是否真的必须存储我想要操作的值的路径并在dict的副本中进行操作?我还可以使用其他映射类型,例如ElementTree吗?

{
  1: {
    11: {
      111: {
        "data1": 1,
        "data2": 2
      }
    }
  },
  2: {
    22: {
      222: {
        "data1": 11,
        "data2": 22
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

您描述的所有操作都没有触及外部字典。他们完全没事。

如果您做了类似

的事情
for key in outer_dict:
    outer_dict[key] = something_different
触及外部字典,但它仍然可以。只要你没有插入或删除你正在迭代的词典中的键,你就不会触发重复。