嗨,我怎样才能得到一个映射列表来打印所有可能的组合
说 dict 映射是 = {1:[a,b],2:[c,d]......
因此,对于列表 [1,2] 和上面的示例映射,我想将 a,d 对 c,d 对的所有可能组合打印到列表中
嗨,我怎样才能得到一个映射列表来打印所有可能的组合
说 dict 映射是 = {1:[a,b],2:[c,d]......
因此,对于列表 [1,2] 和上面的示例映射,我想将 a,d 对 c,d 对的所有可能组合打印到列表中
查看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')
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']
.