Python中Dictionary中元素的组合

时间:2014-04-01 19:11:21

标签: python dictionary combinations

好的,所以我在Python中使用这样的字典:

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

如何得到这样的输出:

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

在这个结果中,元素的原始位置不会改变,但它们只是被字典中各自的含义所取代。我们得到一个列表,列表中包含不同的元素组合。

这可能吗?我该怎么做呢?请帮忙。

1 个答案:

答案 0 :(得分: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')]