동안 사전 변경된 크기는 내가 그것은 내가 '.'
아래 코드 splite를 썼다파이썬 RuntimeError에 : 반복
{ hello: 'world', foo: [{'bar': v1, 'name': v2}, {bar: v3}]}
으로 확장되어야이
{hello: 'world', "foo.0.bar": v1, "foo.0.name": v2, "foo.1.bar": v3}
처럼 obj와 한 새로운 추가, 이전 키를 제거 키가 포함되어있는 경우 '.'
이 포함되지만 그 내용은 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
RuntimeError에 : obj.iteritems()에서 K, V에 대한메시지처럼 반복
그리고 귀하의 질문은 무엇입니까? 오류가 명확하지 않습니까? –
** 게시하기 전에 검색하십시오 ** - http://stackoverflow.com/search?q=RuntimeError%3A+dictionary+changed+size+during+iteration –
[이 python 오류를 해결하는 방법? RuntimeError : 반복되는 동안 사전 크기가 변경됨] (http://stackoverflow.com/questions/2844837/how-to-fix-this-python-error-runtimeerror-dictionary-changed-size-during-itera) –