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