2016-08-02 62 views
6

的字典我想生成这些都是在一个字典索引列表,像这样值的所有组合:的Python:生成从值的所有组合中列出

{'A':['D','E'],'B':['F','G','H'],'C':['I','J']} 

每一次,每个字典中的一个项条目将被挑选并组合与其他按键的项目,所以我们可以有:

['D','F','I'] 
['D','F','J'] 
['D','G','I'] 
['D','G','J'] 
['D','H','I'] 
... 
['E','H','J'] 

我知道有一个产生在itertools列表中的项目组合的东西,但我不认为我可以在这里用它因为我有不同的价值“池”。

是否有任何现有的解决方案来做到这一点,或者我应该如何继续自己做,我很坚持这种嵌套结构。

+2

然后你应该尝试编写代码来做到这一点,如果你有问题就回来。 –

+0

'itertools.product(* yourdict.values())' – Phillip

+2

词典没有排序!请澄清。 –

回答

12
import itertools as it 

my_dict={'A':['D','E'],'B':['F','G','H'],'C':['I','J']} 
allNames = sorted(my_dict) 
combinations = it.product(*(my_dict[Name] for Name in allNames)) 
print(list(combinations)) 

它打印

[( 'd', 'F', 'I'),( 'd', 'F', 'J'),( 'd',' ('D','H','J'),('D','H','I'),('D','H','J'), ('E','F','I'),('E','F','J'),('E','G','I'),('E','G' ('E','H','I'),('E','H','J')]