1

私はPythonが初めてで、私の質問が非常に単純であることを知っていますが、SOに関する既存の質問はまだ見つかりません.

文字列要素を含む配列があります。今、私は要素を抽出し、それらの出現回数を数えたいと思っています.それらは降順でソートされています.

例えば:

['ab' 'ab' 'ac']

出力は次のようになります。

'ab' 2
'ac' 1

また、出力を保存する最良の方法がわからないのは悪いことです(マップ、ハッシュ...またはそのようなもので?繰り返しますが、わかりません)...

助けてくれてありがとう。

4

3 に答える 3

3

これは、モジュールのCounterクラスを使用して実行できます。collections

from collections import Counter
x = ['ab', 'ab', 'ac']
counts = Counter(x)

counts各要素のカウント情報を格納します。メソッドの完全なリストはドキュメントにありますが、おそらく気になるのはcounts、ハッシュのように扱うことでカウントに直接アクセスできることだけです。

counts['ab']
>>> 2
于 2012-07-05T19:31:09.800 に答える
1

これは古典的な問題、いわゆる「単語数」の問題です。おそらく、Pythonに組み込まれている償却線形ルックアップタイプの辞書を使用することをお勧めします。

そのように宣言された:

dict = {}

次に、次のようなループ本体を使用して、トークンのリストを反復処理できます。

if token not in dict:
    dict[token] = 1
else
    dict[token] += 1

完了すると、キーとして単語を、値として頻度を含む辞書ができあがります。

次のドキュメントが関連しています:http://docs.python.org/release/2.5.2/lib/typesmapping.html

于 2012-07-05T19:32:47.483 に答える
1

NLTK というライブラリがあります。リンク - http://nltk.org/

編集:私はもっと良いものを見つけました:

ここでも見ることができます - NLTK の実際の単語数

上記のリンクのコード例:

    from collections import Counter
    >>> text = ['this', 'is', 'a', 'sentence', '.']
    >>> counts = Counter(filtered)
    >>> counts
    Counter({'this': 1, 'a': 1, 'is': 1, 'sentence': 1})
于 2012-07-05T19:28:01.883 に答える