1

嗨,我怎样才能得到一个映射列表来打印所有可能的组合

说 dict 映射是 = {1:[a,b],2:[c,d]......

因此,对于列表 [1,2] 和上面的示例映射,我想将 a,d 对 c,d 对的所有可能组合打印到列表中

4

2 回答 2

4

查看itertools 模块中的组合函数。

如果您正在寻找ab反对的所有配对cd产品功能应该会有所帮助:

>>> d = {1: ['a','b'], 2: ['c', 'd']}
>>> for t in product(*d.values()):
        print t

('a', 'c')
('a', 'd')
('b', 'c')
('b', 'd')

如果您一次查看r的各种大小的所有组合abcd,那么该组合函数应该可以完成工作:

>>> for r in range(5):
        for t in combinations('abcd', r):
            print t

()
('a',)
('b',)
('c',)
('d',)
('a', 'b')
('a', 'c')
('a', 'd')
('b', 'c')
('b', 'd')
('c', 'd')
('a', 'b', 'c')
('a', 'b', 'd')
('a', 'c', 'd')
('b', 'c', 'd')
('a', 'b', 'c', 'd')
于 2012-07-12T01:28:17.147 回答
1
from itertools import product

mapping = {1:['a','b'], 2:['c','d']}
data = [1, 2]
for combo in product(*(mapping[d] for d in data)):
    print combo

结果是

('a', 'c')
('a', 'd')
('b', 'c')
('b', 'd')

编辑听起来你真正想要的是

strings = [''.join(combo) for combo in product(*(mapping[d] for d in data))]

这给出了strings == ['ac', 'ad', 'bc', 'bd'].

于 2012-07-12T01:31:42.090 回答