2016-09-07 3 views
2

여기에 목록의 목록으로 구성된 값을 가진 마스터 dic이 있습니다.사용자 사전 입력 목록 요소를 마스터 사전에서 바꾸시겠습니까?

사용자가 목록의 목록으로 값을 입력 할 때마다 내 프로그램이 마스터 목록의 사용자 입력 목록을 바꾸기를 원합니다.

나는 그것을 시도하고 그것이 예상되는 출력을 제공하지만 그것은 짜증나는 임시 목록을 많이 구성되어 있습니다 원치 않는 임시 목록을 사용하지 않고 동일하게 달성하기 위해 다른 pythonic 방법이 있습니까? DIC

입력 :

master_dic = { 
    'First': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], 
       [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}]], 
    'Second': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], 
       [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}]], 
    'Third': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], 
       [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}]], 
    'Forth': [[{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], 
       [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}], [{'A': '#d8', 'B': '#d7'}, {'C': '#d8', 'D': '#d7'}]] 
} 

내 코드 :

userinput = [[['First'], ['Forth']], [['Second'], ['First']], ['Third'], ['Forth']] 

outer = [] 
for i in userinput: 
    new = [] 
    if len(i) > 1: 
     temp = [] 
     for j in i: 
      jj = master_dic[j[0]] 
      temp.append(jj) 
     new.append(temp) 
     outer.append(new) 
    else: 
     for k in i: 
      kk = master_dic[k] 
      new.append(kk) 
      outer.append(new) 
data_join = [i[0] for i in outer] 

출력 :

목록 없음이 유지 될
[ 
    [[[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]], [[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]]], 

    [[[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]], [[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]]], 

    [[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]], 

    [[{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}], [{'A': '#d8', 'B': '#d7'}, {'D': '#d7', 'C': '#d8'}]] 
] 

[ 
    [[[ {First value} ]], [[ {Forth value} ]]], 

    [[[ {Second value} ]],[[ {First value} ]]], 

    [[ {Third value} ]], 

    [[ {Forth value} ]] 
] 

답변

1

I이이

도움이

def array_replace(userinput,master_dic): 
    for i,data in enumerate(userinput): 
     if isinstance(data, list): 
      found=array_replace(data,master_dic) 
      if not isinstance(found, list): 
       userinput[i]=master_dic[found] 
     else: 
      return data 
    return userinput 

DEMO

희망을 원하는 생각

관련 문제