質問が変わったので、とりあえず出力に合うようなコードを1つ。
python
1import itertools
2d = {'A':["アキ","ヒロシ"], 'B':["1","2"]}
3l = ['B', 'A']
4print( '\n'.join( [a+b for b,a in itertools.product(*[d[k] for k in l])] ) )
以下2点に気をつけてください。
辞書は順序がありませんので、コードの見た目の順番に取り出されるとは限りません。
リストを渡す順番によって、.productのループの回り方も変わります。
evalはできるのなら使わないほうがよいと思われます。
以下の実装ならリストをall_listsに.appendしていけば目的が果たせそうです。
python
1import itertools
2
3A = ("アキ","ヒロシ")
4B = ("1","2")
5all_lists = [A, B]
6print(list(itertools.product(*all_lists)))
7# [('アキ', '1'), ('アキ', '2'), ('ヒロシ', '1'), ('ヒロシ', '2')]
8
9C = ("A","B")
10all_lists.append(C)
11print(list(itertools.product(*all_lists)))
12# [('アキ', '1', 'A'), ('アキ', '1', 'B'), ('アキ', '2', 'A'), ('アキ', '2', 'B'), ('ヒロシ', '1', 'A'), ('ヒロシ', '1', 'B'), ('ヒロシ', '2', 'A'), ('ヒロシ', '2', 'B')]
追記:
リスト・辞書の展開はよく使うテクニックです。
覚えておいて損はありません。
http://nonbiri-tereka.hatenablog.com/entry/2014/08/16/090437
https://qiita.com/7of9/items/e23bdd6e8d4d7997104a
https://teratail.com/questions/52472
http://d.hatena.ne.jp/xef/20121027/p2
退会済みユーザー
2017/12/19 11:26
退会済みユーザー
2017/12/20 23:34