2014-10-09 2 views
0

Hy каждый. У меня 2 dicts как:комбинации 2 dict в python

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