python中映射列表列表的所有组合

时间:2012-07-12 01:26:51

标签: python

您如何获得映射列表以打印所有可能的组合

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

所以使用列表[1,2]和上面的示例映射我想打印出对a,d对c,d的所有可能组合到列表中

2 个答案:

答案 0 :(得分:4)

查看itertools module中的组合函数。

如果您要查找abcd的所有配对,产品功能应该有所帮助:

>>> 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']