回答編集履歴

2

追記

2020/04/16 07:44

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -36,6 +36,80 @@
36
36
 
37
37
 
38
38
 
39
+ コメントを受けて
40
+
41
+ ---
42
+
43
+ > やはり一度辞書型にしてsortするしかないのでしょうか
44
+
45
+
46
+
47
+ 辞書に限らず何らかの方法でオブジェクトの組を作れば良いです。
48
+
49
+
50
+
51
+ ```Python
52
+
53
+ month = [2, 3, 1, 4]
54
+
55
+ sales = [200, 300, 100, 400]
56
+
57
+
58
+
59
+ m_with_s = list(zip(month, sales))
60
+
61
+ print(m_with_s)
62
+
63
+
64
+
65
+ m_with_s = sorted(m_with_s)
66
+
67
+ print(m_with_s)
68
+
69
+
70
+
71
+ month = []
72
+
73
+ sales = []
74
+
75
+ for m, s in m_with_s:
76
+
77
+ month.append(m)
78
+
79
+ sales.append(s)
80
+
81
+
82
+
83
+ print(month)
84
+
85
+ print(sales)
86
+
87
+ ```
88
+
89
+
90
+
91
+ **実行結果** [Wandbox](https://wandbox.org/permlink/M59thhLl1YCvU20S)
92
+
93
+ ```
94
+
95
+ [(2, 200), (3, 300), (1, 100), (4, 400)]
96
+
97
+ [(1, 100), (2, 200), (3, 300), (4, 400)]
98
+
99
+ [1, 2, 3, 4]
100
+
101
+ [100, 200, 300, 400]
102
+
103
+ ```
104
+
105
+
106
+
107
+ 尚 m_with_s = list(zip(month, sales)) とリストに変換しているのはトレースの為で、
108
+
109
+ イテレータをそのまま使って m_with_s = zip(month, sales) とするのが効率的です。
110
+
111
+
112
+
39
113
  おまけ
40
114
 
41
115
  ---

1

追記

2020/04/16 07:44

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -33,3 +33,25 @@
33
33
  sales.append(s)
34
34
 
35
35
  ```
36
+
37
+
38
+
39
+ おまけ
40
+
41
+ ---
42
+
43
+ 次のように書けば実質一行で実現できますが、少々分かりづらいのが難点です。
44
+
45
+ ```Python
46
+
47
+ month, sales = map(
48
+
49
+ list, zip(
50
+
51
+ *sorted(zip(month, sales))
52
+
53
+ )
54
+
55
+ )
56
+
57
+ ```