teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

9

変数分離

2019/12/21 21:40

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -13,7 +13,7 @@
13
13
  B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
14
14
 
15
15
  a = {a[0]: a for a in A}
16
- result = [[*a[b[0]], b[1]] for b in B if b[0] in a]
16
+ result = [[*a[b0], b1] for b0, b1 in B if b0 in a]
17
17
  print(result)
18
18
  ```
19
19
 

8

不要処理削除

2019/12/21 21:40

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -23,8 +23,6 @@
23
23
  A = [['apple', 1],['banana', 2],['orange', 3],['grape', 4]]
24
24
  B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
25
25
 
26
- C = [b[0] for b in B]
27
-
28
26
  result = []
29
27
  for b in B:
30
28
  for a in A:

7

辞書版追加

2019/12/21 21:38

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -6,6 +6,17 @@
6
6
  print(result)
7
7
  ```
8
8
 
9
+ データが大量にあるなら、二重ループは時間がかかり過ぎるので、辞書化した方がいいでしょう。
10
+
11
+ ```python
12
+ A = [['apple', 1],['banana', 2],['orange', 3],['grape', 4],['x',0]]
13
+ B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
14
+
15
+ a = {a[0]: a for a in A}
16
+ result = [[*a[b[0]], b[1]] for b in B if b[0] in a]
17
+ print(result)
18
+ ```
19
+
9
20
  お書きになったコードで対応しました。
10
21
 
11
22
  ```python

6

コード変更

2019/12/21 06:38

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  A = [['apple', 1],['banana', 2],['orange', 3],['grape', 4]]
3
3
  B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
4
4
 
5
- result = [[*a, b[1]] for b in B for a in A if b[0] == a[0]]
5
+ result = [[*a, b[1]] for b in B for a in A if a[0] == b[0]]
6
6
  print(result)
7
7
  ```
8
8
 

5

コード変更

2019/12/21 06:34

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -2,8 +2,7 @@
2
2
  A = [['apple', 1],['banana', 2],['orange', 3],['grape', 4]]
3
3
  B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
4
4
 
5
- b = dict(B)
6
- result = [[name, value, b[name]] for name, value in A if name in b]
5
+ result = [[*a, b[1]] for b in B for a in A if b[0] == a[0]]
7
6
  print(result)
8
7
  ```
9
8
 

4

バグ修正

2019/12/21 06:33

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -16,10 +16,10 @@
16
16
  C = [b[0] for b in B]
17
17
 
18
18
  result = []
19
- for c in C:
19
+ for b in B:
20
- for a in A:
20
+ for a in A:
21
- if a[0] == c:
21
+ if a[0] == b[0]:
22
- result.append([*a, c])
22
+ result.append([*a, b[1]])
23
23
 
24
24
  print(result)
25
25
  ```

3

お書きになたコードの修正版を追加

2019/12/21 06:32

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,8 +1,25 @@
1
- ```py
1
+ ```python
2
2
  A = [['apple', 1],['banana', 2],['orange', 3],['grape', 4]]
3
3
  B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
4
4
 
5
5
  b = dict(B)
6
6
  result = [[name, value, b[name]] for name, value in A if name in b]
7
7
  print(result)
8
+ ```
9
+
10
+ お書きになったコードで対応しました。
11
+
12
+ ```python
13
+ A = [['apple', 1],['banana', 2],['orange', 3],['grape', 4]]
14
+ B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
15
+
16
+ C = [b[0] for b in B]
17
+
18
+ result = []
19
+ for c in C:
20
+ for a in A:
21
+ if a[0] == c:
22
+ result.append([*a, c])
23
+
24
+ print(result)
8
25
  ```

2

変数名変更

2019/12/21 06:29

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -3,6 +3,6 @@
3
3
  B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
4
4
 
5
5
  b = dict(B)
6
- result = [[name, index, b[name]] for name, index in A if name in b]
6
+ result = [[name, value, b[name]] for name, value in A if name in b]
7
7
  print(result)
8
8
  ```

1

質問に対応

2019/12/21 06:24

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -3,6 +3,6 @@
3
3
  B = [['apple', 'ringo'],['banana', 'banana'],['orange', 'orenji'],['grape', 'budou']]
4
4
 
5
5
  b = dict(B)
6
- result = [[name, index, b[name]] for name, index in A]
6
+ result = [[name, index, b[name]] for name, index in A if name in b]
7
7
  print(result)
8
8
  ```