0

私の質問は私の前の質問に似ています: Python list help (incrementing count, appending)。私の受け入れられた答えはうまくいきます。しかし、今回は別の質問があります。

json ファイルから文字列を解析しています。クリーンアップを行ってから、新しい文字列を追加します。各単語のカウンターを取得し (これにより、一意のリストが作成され、発生カウンターが更新されます)、高い順に並べ替え (ここでは most_common を使用する必要があると思います)、リストを 20 に制限する必要があります。これはすべて JavaScript で行いますが、Python では行いません。

詳細には、このように文字列 (json 文字列ファイル) から各文字列を取得するために、再び for ループを実行しています。

# Counter for each word.
words = Counter();

for e in strings:
    # I am cleaning up the string here for unwanted chars, make it lower case
    # and append it to a new string variable.
    # if I were to print the new string variable it will look like this: 
    # hello test another test append hi hai hello hello

# i know I need to call words.update
# should I run a for loop in my new string variable  for each word?

また、どうすれば20に制限できますか?

私が生成したいのは次のようなものです:

word, count
hello 3
test 2
another 1
append 1
hai 1
hi 1

どんな提案でも大歓迎です。

4

1 に答える 1

3

単語のリストがある場合は、次の.update()方法を使用します。

words.update(some_list_of_words)

ジェネレーター式も渡すことができます。

words.update(word.lower() for word in e.split())

文字列eを空白で個別の単語に分割し、各単語を小文字にしてカウントします。

.most_common()返されるアイテムの最大数であるパラメーターを取ります。

words.most_common(20)

少数の単語セットを使用したデモで、最も一般的な上位 3 つの単語に限定します。

>>> from collections import Counter
>>> words = Counter('spam ham eggs baz foo bar baz spam ham eggs spam spam bacon eggs ham spam spam spam eggs ham'.split())
>>> words.most_common(3)
[('spam', 7), ('ham', 4), ('eggs', 4)]
于 2013-04-24T15:42:26.153 に答える