2013-03-03 3 views
0

에 목록에서 사전 항목은 사전의 목록으로 값을 갖는 사전에 작업을 수행 할 필요 나는 그의 키 두 개의 값이 목록의 첫 번째 사전을 나눌 수있는 방법분할이

my_dicts = 
      {"A": [ 
       { 'key1 a' : 'value1', 
        'key2 a' : 'A, B, C' 
       }, 

       { 'key1 a' : 'value3', 
        'key2 a' : 'D, E' 
       } 
       ] 
       } 

쉼표로 구분하여 ','목록에서 두 개의 별도 사전. 즉 상기 사전

my_dicts = 
       {"A": [ 
        { 'key1 a' : 'value1', 
         'key2 a' : 'A' 
        }, 

        { 'key1 a' : 'value1', 
         'key2 a' : 'B' 
        }, 

        { 'key1 a' : 'value1', 
         'key2 a' : 'C' 
        }, 

        { 'key1 a' : 'value3', 
         'key2 a' : 'D' 
        } 

         { 'key1 a' : 'value3', 
         'key2 a' : 'E' 
        } 
        ] 
        } 

무엇 아니오 경우처럼된다. 균열이 확실하지 않습니까? 도움을받을 수 있다면

답변

0

을이 두 키에 대한 쉼표로 분리 된 값의 임의의 번호를 작동하기 때문에 나는이 솔루션은보다 강력한 생각합니다. 그런데

def permutateMap(X): 
    result = [] 
    for key, value in X.items(): 
     splitted = value.split(',') 
     if len(splitted) > 1: 
      for s in splitted: 
       new_dict = X.copy() 
       new_dict[key] = s.strip() 
       result += [new_dict] 
      return splitList(result) 
    return [X] 

def splitList(X): 
    result = [] 
    for entry in X: 
     result += permutateMap(entry) 
    return result 


my_dicts = {"A": [ 
      { 'key1 a' : 'value1, value2', 
       'key2 a' : 'A, B, C' }, 
      { 'key1 a' : 'value3', 
       'key2 a' : 'D, E' }]} 

new_dict = {} 
for key, value in my_dicts.items(): 
    new_dict[key] = splitList(value) 

print new_dict 

, 나는 그것이 그 가치없는 쉼표로 구분 된 문자열로하지만, 같은 튜플 ('A', 'B', 'C')를 저장하는 것이 편리/더 적합 할 것 같아요. 문자열 연산 ( split()strip())이 필요하지 않습니다.

1

사전 요소를 반복하고 값에 따라 두 개의 새로운 사전을 만들 수 있습니다. 그런 다음 두 개의 새로운 사람과 당신의 목록에서 적절한 사전을 대체 :

def splitdict(orig): 
    dict1 = {} 
    dict2 = {} 
    for key, value in orig.items(): 
     words = value.split(",") 
     if len(words) == 2: 
      dict1[key] = words[0] 
      dict2[key] = words[1] 
     else: 
      dict1[key] = value 
      dict2[key] = value 
    return dict1, dict2 

my_dicts["A"][0:1] = splitdict(my_dicts["A"][0]) 
관련 문제