回答編集履歴
2
追記
answer
CHANGED
@@ -66,4 +66,7 @@
|
|
66
66
|
```
|
67
67
|
[('usa', 873), ('uk', 543), ('kenya', 477), ('china', 229), ('japan', 115), ('brazil', 89), ('rossia', 24)]
|
68
68
|
OrderedDict([('usa', 873), ('uk', 543), ('kenya', 477), ('china', 229), ('japan', 115), ('brazil', 89), ('rossia', 24)])
|
69
|
-
```
|
69
|
+
```
|
70
|
+
|
71
|
+
Python3.7以降をご利用の場合は、ただの辞書を使っても挿入順を保証できます。
|
72
|
+
逆に3.6以前であればOrderedDictを使うべきでしょう。
|
1
追記
answer
CHANGED
@@ -35,4 +35,35 @@
|
|
35
35
|
> 上の結果はどのようにソートされたものなのでしょうか?
|
36
36
|
|
37
37
|
国名の1文字目(最初の文字が0文字目)の、降順。
|
38
|
-
uSa > bRazil > rOssia > uK > cHina > kEnya > jApan
|
38
|
+
uSa > bRazil > rOssia > uK > cHina > kEnya > jApan
|
39
|
+
|
40
|
+
解決策
|
41
|
+
---
|
42
|
+
> またlambdaを使ってどのように記述すれば正しく出力されるのでしょか?
|
43
|
+
|
44
|
+
dict.itemsを利用してタプルを抜き出し、ソート後辞書に変換します。
|
45
|
+
```Python
|
46
|
+
import collections
|
47
|
+
|
48
|
+
dct = {
|
49
|
+
"japan": 115,
|
50
|
+
"china": 229,
|
51
|
+
"brazil": 89,
|
52
|
+
"usa": 873,
|
53
|
+
"uk": 543,
|
54
|
+
"rossia": 24,
|
55
|
+
"kenya": 477
|
56
|
+
}
|
57
|
+
|
58
|
+
items_sorted = sorted(dct.items(), key=lambda x: x[1], reverse=True)
|
59
|
+
print(items_sorted)
|
60
|
+
|
61
|
+
sorted_dct = collections.OrderedDict(items_sorted)
|
62
|
+
print(sorted_dct)
|
63
|
+
```
|
64
|
+
|
65
|
+
**実行結果** [Wandbox](https://wandbox.org/permlink/QSMXoPKhSBdlxFEt)
|
66
|
+
```
|
67
|
+
[('usa', 873), ('uk', 543), ('kenya', 477), ('china', 229), ('japan', 115), ('brazil', 89), ('rossia', 24)]
|
68
|
+
OrderedDict([('usa', 873), ('uk', 543), ('kenya', 477), ('china', 229), ('japan', 115), ('brazil', 89), ('rossia', 24)])
|
69
|
+
```
|