Python RuntimeError: el diccionario cambió de tamaño durante la iteración
Tengo obj como esta
<code>{hello: 'world', "foo.0.bar": v1, "foo.0.name": v2, "foo.1.bar": v3} </code>
Debería ser expandido a
<code>{ hello: 'world', foo: [{'bar': v1, 'name': v2}, {bar: v3}]} </code>
Escribí el código de abajo, dividido por'.'
, eliminar clave antigua, añadir nueva clave si contiene'.'
, pero dijoRuntimeError: 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>
para k, v en obj.iteritems ():
RuntimeError: el diccionario cambió de tamaño durante la iteración