2014-10-02 4 views
0

파이썬에서 중첩 된 dict를 동적으로 만들고 싶습니다. 말하는 기준 : 주어진파이썬은 동적으로 중첩 된 dict를 구성합니다.

tuple1 = ('A','B'), 
tuple2 = ('A','C'), 
dict = {} 
내가 dicttuple1를 추가 한 후 dict = {'A': {'B':1}} 같은 dict을 가지고 싶습니다

; then dict = {'A': {'B' : 1, 'C' : 1}} 추가 후 tuple2 to dict 그게 내가 시도한거야, 다음 코드를 반복적으로 중첩 된 만들려면 다음 코드를 찾으십시오. 하지만 아래 코드의 끝에서 1

def incr_dict(dct, tpl): 
    if len(tpl) == 0: 
     dct = dct 
    else: 
     dct = {tpl[-1]:dct} 
     return incr_dict(dct, tpl[0:-1]) 
    return dct 

dct = {} 
tpl = ('a', 'b', 'c') 

dct = incr_dict(dct, tpl) 
print(dct) 
+0

maplist가 기본 키가되는 방법은 무엇입니까? –

+0

그는'{ 'A': 'B'}'와'{ 'A': 'C'}'를 의미한다고 생각합니다. – o11c

+1

파이썬에서 수행 할 수있는 최선의 방법은 코드를 작성하는 것입니다. –

답변

0

에 의해 그 값을 동적으로 노드를 추가하고 또한 증가하는 방법을 잘 모르겠어요, 당신은 {'A': {'B': 1, 'C': 1}}하는 딕셔너리 d이있을 것이다; 가장 바깥 쪽 루프는 꼭 필요한 것은 아니지만,이 인스턴스에서는 타이핑을 덜어 줬습니다.

tuple1 = ('A','B') 
tuple2 = ('A','C') 
d = {} 
for l in [list(tuple1), list(tuple2)]: 
    for k in l: 
     v = l.pop() 
     if (d.has_key(k)): 
      if (d[k].has_key(v)): 
       d[k][v] = d[k][v]+1 
      else: 
       d[k][v] = 1 
     else: 
      d[k] = {} 
      d[k][v] = 1 
관련 문제