2

最もよく使われる単語の辞書を作成し、トップ 10 を取得します。これをリストに並べ替える必要があります。これは順番に並べる必要があります。使えないリストを作らないとできません。これが私のコードです。外出中 辞書を並べ替えることができませんが、まだ助けが必要です。

most_used_words = Counter()
zewDict = Counter(most_used_words).most_common(10)
newDict = dict(zewDict)
keys = newDict.keys()
values = newDict.values()
msg = ('Here is your breakdown of your most used words: \n\n'
       'Word | Times Used'
       '\n:--:|:--:'
       '\n' + str(keys[0]).capitalize() + '|' + str(values[0]) +
       '\n' + str(keys[1]).capitalize() + '|' + str(values[1]) +
       '\n' + str(keys[2]).capitalize() + '|' + str(values[2]) +
       '\n' + str(keys[3]).capitalize() + '|' + str(values[3]) +
       '\n' + str(keys[4]).capitalize() + '|' + str(values[4]) +
       '\n' + str(keys[5]).capitalize() + '|' + str(values[5]) +
       '\n' + str(keys[6]).capitalize() + '|' + str(values[6]) +
       '\n' + str(keys[7]).capitalize() + '|' + str(values[7]) +
       '\n' + str(keys[8]).capitalize() + '|' + str(values[8]) +
       '\n' + str(keys[9]).capitalize() + '|' + str(values[9]))
r.send_message(user, 'Most Used Words', msg)

メッセージが単語の正しい値を使用して、一番上にある最も使用されている単語から一番下にある単語の順に単語を出力するようにするにはどうすればよいですか?

編集: 辞書を単独でソートできないことはわかっているので、どうにかしてこれを回避できますか?

4

3 に答える 3

4

取得したら、次valuesのように簡単です。

print('Word | Times Used')
for e, t in collections.Counter(values).most_common(10):
    print("%s|%d" % (e,t))

次のようなものを印刷します。

Word | Times Used
e|4
d|3
a|2
c|2
于 2013-05-27T06:48:17.840 に答える
3

ドキュメントから:most_common([n])

n 個の最も一般的な要素のリストと、それらの数を最も一般的なものから順に返します。n が指定されていない場合、most_common() はカウンター内のすべての要素を返します。カウントが等しい要素は、任意に並べ替えられます。

>>> Counter('abracadabra').most_common(3)
[('a', 5), ('r', 2), ('b', 2)]

コードは次のようになります。

from collections import Counter
c = Counter(most_used_words)
msg = "Here is your breakdown of your most used words:\n\nWords | Times Used\n:--:|:--:\n"
msg += '\n'.join('%s|%s' % (k.capitalize(), v) for (k, v) in c.most_common(10))
r.send_message(user, 'Most Used Words', msg)
于 2013-05-27T06:42:52.107 に答える
2
import operator
newDict = dict(zewDict)

sorted_newDict = sorted(newDict.iteritems(), key=operator.itemgetter(1))
msg = ''
for key, value in sorted_newDict:
  msg.append('\n' + str(key).capitalize() + '|' + str(value))

これにより、辞書の値で並べ替えられます。順番を変えたい場合は に追加reverse=Trueしてsorted()ください。

于 2013-05-27T06:42:37.253 に答える