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

回答編集履歴

2

追記

2020/04/16 07:44

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -17,6 +17,43 @@
17
17
  sales.append(s)
18
18
  ```
19
19
 
20
+ コメントを受けて
21
+ ---
22
+ > やはり一度辞書型にしてsortするしかないのでしょうか
23
+
24
+ 辞書に限らず何らかの方法でオブジェクトの組を作れば良いです。
25
+
26
+ ```Python
27
+ month = [2, 3, 1, 4]
28
+ sales = [200, 300, 100, 400]
29
+
30
+ m_with_s = list(zip(month, sales))
31
+ print(m_with_s)
32
+
33
+ m_with_s = sorted(m_with_s)
34
+ print(m_with_s)
35
+
36
+ month = []
37
+ sales = []
38
+ for m, s in m_with_s:
39
+ month.append(m)
40
+ sales.append(s)
41
+
42
+ print(month)
43
+ print(sales)
44
+ ```
45
+
46
+ **実行結果** [Wandbox](https://wandbox.org/permlink/M59thhLl1YCvU20S)
47
+ ```
48
+ [(2, 200), (3, 300), (1, 100), (4, 400)]
49
+ [(1, 100), (2, 200), (3, 300), (4, 400)]
50
+ [1, 2, 3, 4]
51
+ [100, 200, 300, 400]
52
+ ```
53
+
54
+ 尚 m_with_s = list(zip(month, sales)) とリストに変換しているのはトレースの為で、
55
+ イテレータをそのまま使って m_with_s = zip(month, sales) とするのが効率的です。
56
+
20
57
  おまけ
21
58
  ---
22
59
  次のように書けば実質一行で実現できますが、少々分かりづらいのが難点です。

1

追記

2020/04/16 07:44

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -15,4 +15,15 @@
15
15
  for m, s in dic:
16
16
  month.append(m)
17
17
  sales.append(s)
18
+ ```
19
+
20
+ おまけ
21
+ ---
22
+ 次のように書けば実質一行で実現できますが、少々分かりづらいのが難点です。
23
+ ```Python
24
+ month, sales = map(
25
+ list, zip(
26
+ *sorted(zip(month, sales))
27
+ )
28
+ )
18
29
  ```