組合

2014-04-01 36 views
0

好了,所以我在Python中的字典是這樣的:組合

dict={'a':'','b':'2','c':'3'} 

你如何獲得的輸出是這樣的:

[['a','b','c'], 
['a','2','c'], 
['a','b','3'], 
['a','2','3']] 

在這個結果中,元素的原始位置不會改變,但它們僅僅被字典中它們各自的含義所替代。我們得到不同元素組合的列表清單。

這可能嗎?我該怎麼做呢?請幫忙。

回答

2

字典沒有排序,所以沒有「元素的原始位置」。也就是說,我認爲你可以使用itertools.product生成所有可能性:

>>> from itertools import product 
>>> d = {'a':'','b':'2','c':'3'} 
>>> poss = [(k,v) if v else (k,) for k,v in d.items()] 
>>> list(product(*poss)) 
[('a', 'c', 'b'), ('a', 'c', '2'), ('a', '3', 'b'), ('a', '3', '2')] 

其中poss描述了所有你想爲每學期之間進行選擇的選擇:

>>> poss 
[('a',), ('c', '3'), ('b', '2')] 

您可以通過順序排序我猜:

>>> poss = [(k,v) if v else (k,) for k,v in sorted(d.items())] 
>>> list(product(*poss)) 
[('a', 'b', 'c'), ('a', 'b', '3'), ('a', '2', 'c'), ('a', '2', '3')] 
+0

非常感謝。這是我需要的。 –