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