2014-10-09 1 views
0

Hy 모두. 내가 좋아하는 2 dicts이 있습니다파이썬에서 2 dict의 조합

dict_in = { 
    'a1': {'b': [1, 2], 'c': [4, 5]}, 
    'a2': {'b': [6, 7], 'c': [8, 10]} 
} 

내가 좋아하는 모든 가능한 중복되지 조합으로 출력을 좀하고 싶습니다 :

res_dict = [ 
    {'a1': {b: 1, c: 4}, 'a2': {'b': 6, 'c': 8}}, 
    {'a1': {b: 2, c: 4}, 'a2': {'b': 6, 'c': 8}}, 
    {'a1': {b: 1, c: 5}, 'a2': {'b': 6, 'c':8}}, 
    {'a1': {b: 1, c: 5}, 'a2': {'b': 6, 'c':8}}, 
    {'a1': {b: 2, c: 5}, 'a2': {'b': 6, 'c':8}}, 
    {'a1': {b: 1, c: 4}, 'a2': {'b': 7, 'c':8}}, 
    {'a1': {b: 1, c: 4}, 'a2': {'b': 7, 'c':10}}, 
    .... 

어디에 어떤 제안인가?

+1

(1) 변수'dict'의 이름을 지정하지 마십시오, 즉이 (가) 유형 이름에 내장입니다. (2) 코드를 작성하고 사용해보십시오. :) –

+0

['itertools.product'] (https://docs.python.org/2/library/itertools.html#itertools.product) 여기 유용 할 것 같습니다. – bereal

답변

0

그래서, 내가 찾기 솔루션했습니다 :

import itertools as it 

dict_comb = {i : itertools.product(*dict_in[i].values()) for i in dict_in.keys()} 
keys = dict_comb.keys() 
final_dict = itertools.product(* [ dict_comb[key] for key in keys]) 
+0

[귀하의 코드가 일치하지 않습니다] (http://ideone.com/SY3jsE) 질문에 출력합니다. – jfs