回答編集履歴

2

別解を追加

2017/10/02 06:10

投稿

can110
can110

スコア38256

test CHANGED
@@ -31,3 +31,51 @@
31
31
  # C 10
32
32
 
33
33
  ```
34
+
35
+
36
+
37
+ #### 別解
38
+
39
+
40
+
41
+ ファイル走査中に、最大得票数の決定と、候補者リストを作成する例です。
42
+
43
+ 接戦だとリスト生成が多数回発生しますが、先の回答よりは処理時間は短くなるはずです。
44
+
45
+
46
+
47
+ ```Python
48
+
49
+ f = open("votes.txt")
50
+
51
+ votes = {}
52
+
53
+ who = []
54
+
55
+ max_v = -1
56
+
57
+ for name in f:
58
+
59
+ name = name[:-1]
60
+
61
+ votes[name] = votes.get(name, 0) + 1
62
+
63
+ if max_v < votes[name]:
64
+
65
+ max_v = votes[name]
66
+
67
+ who.clear() # これまでの候補をクリア
68
+
69
+
70
+
71
+ if max_v == votes[name]:
72
+
73
+ who.append(name)
74
+
75
+
76
+
77
+ f.close()
78
+
79
+ print('{0:s} {1:d}票'.format(str(who), max_v))
80
+
81
+ ```

1

結果を追記

2017/10/02 06:10

投稿

can110
can110

スコア38256

test CHANGED
@@ -24,4 +24,10 @@
24
24
 
25
25
  print(k,v)
26
26
 
27
+
28
+
29
+ # A 10
30
+
31
+ # C 10
32
+
27
33
  ```