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

さまざまなサイズのrabcdについて、一度に取得したrのすべての組み合わせを探している場合は、組み合わせ関数で作業を完了できます。

>>> 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 に答える