回答編集履歴

2

追記

2020/04/24 02:39

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -135,3 +135,9 @@
135
135
  OrderedDict([('usa', 873), ('uk', 543), ('kenya', 477), ('china', 229), ('japan', 115), ('brazil', 89), ('rossia', 24)])
136
136
 
137
137
  ```
138
+
139
+
140
+
141
+ Python3.7以降をご利用の場合は、ただの辞書を使っても挿入順を保証できます。
142
+
143
+ 逆に3.6以前であればOrderedDictを使うべきでしょう。

1

追記

2020/04/24 02:39

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -73,3 +73,65 @@
73
73
  国名の1文字目(最初の文字が0文字目)の、降順。
74
74
 
75
75
  uSa > bRazil > rOssia > uK > cHina > kEnya > jApan
76
+
77
+
78
+
79
+ 解決策
80
+
81
+ ---
82
+
83
+ > またlambdaを使ってどのように記述すれば正しく出力されるのでしょか?
84
+
85
+
86
+
87
+ dict.itemsを利用してタプルを抜き出し、ソート後辞書に変換します。
88
+
89
+ ```Python
90
+
91
+ import collections
92
+
93
+
94
+
95
+ dct = {
96
+
97
+ "japan": 115,
98
+
99
+ "china": 229,
100
+
101
+ "brazil": 89,
102
+
103
+ "usa": 873,
104
+
105
+ "uk": 543,
106
+
107
+ "rossia": 24,
108
+
109
+ "kenya": 477
110
+
111
+ }
112
+
113
+
114
+
115
+ items_sorted = sorted(dct.items(), key=lambda x: x[1], reverse=True)
116
+
117
+ print(items_sorted)
118
+
119
+
120
+
121
+ sorted_dct = collections.OrderedDict(items_sorted)
122
+
123
+ print(sorted_dct)
124
+
125
+ ```
126
+
127
+
128
+
129
+ **実行結果** [Wandbox](https://wandbox.org/permlink/QSMXoPKhSBdlxFEt)
130
+
131
+ ```
132
+
133
+ [('usa', 873), ('uk', 543), ('kenya', 477), ('china', 229), ('japan', 115), ('brazil', 89), ('rossia', 24)]
134
+
135
+ OrderedDict([('usa', 873), ('uk', 543), ('kenya', 477), ('china', 229), ('japan', 115), ('brazil', 89), ('rossia', 24)])
136
+
137
+ ```