python RuntimeError: словарь изменил размер во время итерации
У меня есть объект, как это
<code>{hello: 'world', "foo.0.bar": v1, "foo.0.name": v2, "foo.1.bar": v3} </code>
Следует расширить до
<code>{ hello: 'world', foo: [{'bar': v1, 'name': v2}, {bar: v3}]} </code>
Я написал код ниже, разделить на'.'
, удалить старый ключ, добавить новый ключ, если содержит'.'
, но это сказалRuntimeError: dictionary changed size during iteration
<code>def expand(obj): for k in obj.keys(): expandField(obj, k, v) def expandField(obj, f, v): parts = f.split('.') if(len(parts) == 1): return del obj[f] for i in xrange(0, len(parts) - 1): f = parts[i] currobj = obj.get(f) if (currobj == None): nextf = parts[i + 1] currobj = obj[f] = re.match(r'\d+', nextf) and [] or {} obj = currobj obj[len(parts) - 1] = v </code>
для k, v в объектах.ititems ():
RuntimeError: словарь изменил размер во время итерации