he obj como estopitón: el diccionario de tamaño cambiado durante la iteración
{hello: 'world', "foo.0.bar": v1, "foo.0.name": v2, "foo.1.bar": v3}
Se debe ampliar a
{ hello: 'world', foo: [{'bar': v1, 'name': v2}, {bar: v3}]}
escribí código de abajo, splite por '.'
, retire la llave de edad, añadir nueva clave si contiene '.'
, pero dijo RuntimeError: dictionary changed size during iteration
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
para k, v en obj.iteritems():
RuntimeError: diccionario de tamaño cambiado durante la iteración
¿Y cuál es tu pregunta? ¿El error no está claro? –
** Busque antes de publicar ** - http://stackoverflow.com/search?q=RuntimeError%3A+dictionary+changed+size+during+iteration –
posible duplicado de [¿Cómo solucionar este error de python? RuntimeError: el tamaño del diccionario cambió durante la iteración] (http://stackoverflow.com/questions/2844837/how-to-fix-this-python-error-runtimeerror-dictionary-changed-size-during-itera) –