그래서 같은 데이터 (을 보장 예,이 튜플은 정확히 5 요소를 가지고)이 : 나는 중첩 사전에 구문 분석하려고 해요* 매우 * 중첩 된 DICT 이해
ts = ([('a','b','c','d','e'), ('v','w','x','y','z'),
('f','g','h','i','j'), ('a','foo','bar',1,2),
('f','g','baz',1,3), ('f','g','baz',3,4)])
을 다음과 같은 구조 :
d = {
'a': {
'b': {
'c': [('d','e')]
},
'foo': {
'bar': [(1,2)]
}
},
'f': {
'g': {
'h': [('i', 'j')],
'baz': [(1,3), (3,4)]
}
},
'v': {
'w': {
'x': [('y', 'z')]
}
}
}
이것은 내가 지금까지 가지고있는 것이다.
>>> {t[0]: {t[1]: {t[2]: [(t[3],t[4])]}} for t in ts}
{'a': {'foo': {'bar': [(1, 2)]}}, 'f': {'g': {'baz': [(3, 4)]}}, 'v': {'w': {'x': [('y', 'z')]}}}
을 그리고 당신은 정말이 결과를보고 싶지 않아 :
>>> d = {}
>>> for t in ts:
... if t[0] not in d:
... d[t[0]] = {t[1]: {t[2]: [(t[3], t[4])]}}
... elif t[1] not in d[t[0]]:
... d[t[0]][t[1]] = {t[2]: [(t[3], t[4])]}
... elif t[2] not in d[t[0]][t[1]]:
... d[t[0]][t[1]][t[2]] = [(t[3], t[4])]
... else:
... d[t[0]][t[1]][t[2]].append((t[3],t[4]))
...
>>> d
{'a': {'b': {'c': [('d', 'e')]}, 'foo': {'bar': [(1, 2)]}}, 'f': {'g': {'h': [('i', 'j')], 'baz': [(1, 3), (3, 4)]}}, 'v': {'w': {'x': [('y', 'z')]}}}
나는 물론, 일부 값을 덮어있어,이 이해를 시도 할 때 : 제대로 작동하는 것 같다 :
>>> {t[0]: {t[1]: {t[2]: [(t[3],t[4])] for t in ts} for t in ts} for t in ts}
이 독트럽 독해를 올바르게 쓰려면 어떻게해야합니까?
편집 : 미안, 내가 언급하는 것을 잊었다 해요 -이 (이것은 결국 PyObjC를 통해 NSDictionary
로 변환 점점) 하루의 끝에 정규 사전해야합니다.
'ts가 튜플로되어 있습니까? 주위에 아무 것도하지 않는 한 쌍의 괄호가있는 것 같습니다. – user2357112
@ user2357112 그건 통역사를위한 [편집증 parens] (http://memegenerator.co/instance/34622417)입니다. – 2rs2ts