回答編集履歴
3
追記
answer
CHANGED
@@ -36,4 +36,20 @@
|
|
36
36
|
|
37
37
|
lst.sort(key=lambda s: counter[len(s)], reverse=True)
|
38
38
|
print(lst)
|
39
|
+
```
|
40
|
+
|
41
|
+
---
|
42
|
+
**追記**:
|
43
|
+
lehshellさんの回答を見て、同じ頻度の『長さ』への考慮が足りなかったことに気付きました。
|
44
|
+
C)のソートは次の二段階に分けると良いですね。
|
45
|
+
```Python
|
46
|
+
lst.sort(key=len)
|
47
|
+
lst.sort(key=lambda s: counter[len(s)], reverse=True)
|
48
|
+
print(lst)
|
49
|
+
```
|
50
|
+
|
51
|
+
あるいはキー関数でタプルを返しても良いです。
|
52
|
+
```Python
|
53
|
+
lst.sort(key=lambda s: (-counter[len(s)], len(s)))
|
54
|
+
print(lst)
|
39
55
|
```
|
2
誤字
answer
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
A)B)については試行錯誤してみてほしいです。
|
16
16
|
C)についてはちょっとめんどくさいので解説します。
|
17
17
|
|
18
|
-
(大文字が頭文字以外に入る
|
18
|
+
(大文字が頭文字以外に入る余地があるのなら、A)B)は一括した方が楽でしょう。)
|
19
19
|
|
20
20
|
---
|
21
21
|
#### **長さの頻度の得方**
|
1
追記
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
端的に言うと今回のケースは次のように分割して考えることができます。
|
8
8
|
```Python
|
9
9
|
# 優先順位が高い条件のソートほど後に行うようにします。
|
10
|
-
lst.sort(key=...) # A) 大文字が先、小文字が後にソート
|
10
|
+
lst.sort(key=...) # A) 頭文字を見て、大文字が先、小文字が後にソート
|
11
11
|
lst.sort(key=...) # B) アルファベット順にソート(大文字小文字は無視)
|
12
12
|
lst.sort(key=...) # C) 長さの頻度降順にソート
|
13
13
|
```
|
@@ -15,6 +15,8 @@
|
|
15
15
|
A)B)については試行錯誤してみてほしいです。
|
16
16
|
C)についてはちょっとめんどくさいので解説します。
|
17
17
|
|
18
|
+
(大文字が頭文字以外に入る予知があるのなら、A)B)は一括した方が楽でしょう。)
|
19
|
+
|
18
20
|
---
|
19
21
|
#### **長さの頻度の得方**
|
20
22
|
collections.Counterが便利です。
|