回答編集履歴

2

修正

2020/12/19 12:34

投稿

退会済みユーザー
test CHANGED
@@ -41,10 +41,6 @@
41
41
  以下追加修正
42
42
 
43
43
  '''
44
-
45
- if stop >= len(a_tp):
46
-
47
- return a_tp
48
44
 
49
45
  # 集計数が同じ間は延長。異なれば打ち切る。
50
46
 

1

修正

2020/12/19 12:34

投稿

退会済みユーザー
test CHANGED
@@ -1,20 +1,10 @@
1
- a_tp = [('aaa', 8) , ('bbb', 6), ('ccc', 6)...}いうように
1
+ えば第「10」位までであれば、
2
2
 
3
- 各文字列とその個数のペアはできてるので
3
+ a_tp = [('aaa', 8) , ('bbb', 6), ('ccc', 6)...]
4
4
 
5
+ の「10番目」(インデックス「9」)以降の要素の集計数を、隣の要素の集計数と比較し、
5
6
 
6
-
7
- あとは、逆に、個をキーに同じ個を持っている文字列をリストにした辞書を作成ればよいのではないでしょうか
7
+ 集計が等ければ異なる集計数に出会うまで延長す。
8
-
9
-
10
-
11
- (文字列, 個数)のリスト
12
-
13
-
14
-
15
- (個数:文字列)の辞書
16
-
17
-
18
8
 
19
9
  ```
20
10
 
@@ -22,13 +12,17 @@
22
12
 
23
13
  '''
24
14
 
15
+ 引数
16
+
25
- 個数ごとに集計したリストを返す
17
+  stop:上位第何位まで返すかを指定。
18
+
19
+  list_txt:集計対象の文字列
26
20
 
27
21
  '''
28
22
 
29
- def top_ten(list_txt):
23
+ def top(stop, list_txt):
30
24
 
31
-
25
+
32
26
 
33
27
  list_lower = []
34
28
 
@@ -40,25 +34,25 @@
40
34
 
41
35
  a_tp = sorted(a_dict.items(), key=lambda x:x[1], reverse=True)
42
36
 
43
- '''
37
+
44
-
45
- 以下追加
46
38
 
47
39
  '''
48
40
 
49
- # 個数をキー、文字列のリストを値とした辞書を作る
41
+ 以下追加修正
50
42
 
51
- s={}
43
+ '''
52
44
 
53
- for word, count in a_tp:
45
+ if stop >= len(a_tp):
54
46
 
55
- s.setdefault(count,[])
47
+ return a_tp
56
48
 
57
- s[count].append(word)
49
+ # 集計数が同じ間は延長。異なれば打ち切る。
58
50
 
59
-
51
+ while stop < len(a_tp) and a_tp[stop - 1][1] == a_tp[stop][1]:
60
52
 
53
+ stop += 1
54
+
61
- return [(k,v) for k,v in s.items()]
55
+ return a_tp[:stop]
62
56
 
63
57
  ```
64
58
 
@@ -80,7 +74,7 @@
80
74
 
81
75
  for i in range(26):
82
76
 
83
- txt.extend([chr(i+65)]*random.randint(1,20))
77
+ txt.extend([chr(i + 65)] * random.randint(1, 20))
84
78
 
85
79
 
86
80
 
@@ -92,10 +86,10 @@
92
86
 
93
87
 
94
88
 
95
- print(top_ten(txt)[:10])
89
+ print(top(10,txt))
96
90
 
97
91
 
98
92
 
99
- >> [(20, ['n', 'o', 'x']), (19, ['g', 'h']), (17, ['p', 's', 'y']), (16, ['r']), (14, ['f', 'v']), (13, ['w']), (10, ['l']), (9, ['b', 't']), (8, ['d', 'j', 'u']), (7, ['c', 'z'])]
93
+ >> [('k', 20), ('s', 18), ('w', 18), ('p', 16), ('v', 15), ('e', 14), ('h', 14), ('m', 14), ('n', 13), ('q', 12), ('o', 12)]
100
94
 
101
95
  ```