4

ファイルにカウンターを書き込む必要がありますが、発生頻度の高いものから発生頻度の低いものへと順番に並べる必要がありますが、少し問題があります。カウンターを印刷すると順番に印刷されますが、呼び出しcounter.items()てからファイルに書き込むと、順不同で書き込まれます。

私はこのようにしようとしています:

word      5
word2     4
word3     4
word4     3
4

2 に答える 2

13

使用することをお勧めします。collections.Counterその後、Counter.most_common探していることを実行します。

デモ:

>>> c = Counter('abcdeabcdabcaba')
>>> c.most_common()
[('a', 5), ('b', 4), ('c', 3), ('d', 2), ('e', 1)]

これをファイルに書き込みます。

c = Counter('abcdeabcdabcaba')
with open("abc", 'w') as f:
    for k,v in  c.most_common():
        f.write( "{} {}\n".format(k,v) )

ヘルプCounter.most_common:

>>> Counter.most_common?
Docstring:
List the n most common elements and their counts from the most
common to the least.  If n is None, then list all element counts.

>>> Counter('abcdeabcdabcaba').most_common(3)
[('a', 5), ('b', 4), ('c', 3)]
于 2013-05-28T20:51:36.933 に答える
2
from operator import itemgetter
print sorted( my_counter.items(),key=itemgetter(1),reverse=True)

うまくいくはずです:)

辞書にはカウンターとは何かという順序がないため、ある順序で並べたい場合は項目リストを並べ替える必要があります...この場合、「キー」ではなく「値」で並べ替えます

于 2013-05-28T20:50:28.363 に答える