您如何获得映射列表以打印所有可能的组合
说dict映射是= {1:[a,b],2:[c,d] ......
所以使用列表[1,2]和上面的示例映射我想打印出对a,d对c,d的所有可能组合到列表中
答案 0 :(得分:4)
查看itertools module中的组合函数。
如果您要查找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
r 的所有组合,那么组合 function应该完成工作:
>>> 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')
答案 1 :(得分: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']
。