辞書を使用して、指定した文字列の単語頻度をカウントしようとしていました。セイ: 辞書の理解のある単語頻度
s = 'I ate an apple a big apple'
は、私はおそらく
collections.Counter
を使用することである単語の出現頻度をカウントするための最良の方法を理解しています。しかし、私は辞書の理解を使ってこれを解決できるかどうかを知りたい。
(辞書の理解なし)私のオリジナルのメソッドは
dict = {}
for token in s.split(" "):
dict[token] = dict.get(token, 0) + 1
だったし、それが正常に動作します:
dict
{'I': 1, 'a': 1, 'an': 1, 'apple': 2, 'ate': 1, 'big': 1}
私は
dict = {}
dict = {token: dict.get(token, 0) + 1 for token in s.split(" ")}
のように、これに辞書内包表記を使用しようとしましたしかし、これはうまくいかなかった。
辞書の理解には何が問題なのですか?それは私が理解の中で使用したので、私がdict.get('apple', 0
と呼ぶたびに)理解で、私は0
を得ますか?しかし、私はこれをテストする方法を知らないので、私は100%確実ではありません。
P.S.何か違いがある場合は、私はPython 3を使用しています。
これはずっと前に 'collections.Counter'(dictサブタイプ)が解決したものです –
これは組み込みであるため変数名としてdictを使用しませんでしたので、何かを壊す可能性があります – e4c5
変数' dict' isn理解が完全に計算されるまで更新されないので、 'dict。get(token、0) 'の中で、前の行の空の辞書とのみ協議が行われます。 – khelwood