2014-10-09 48 views
0

Hy everyone。我有2種類型的字典,如:2字典在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)寫一些代碼並嘗試一下。 :) – 2014-10-09 08:47:12

+0

['itertools.product'](https://docs.python.org/2/library/itertools.html#itertools.product)在這裏似乎很有用。 – bereal 2014-10-09 17:40:58

回答

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 2014-10-10 04:17:32