値がキーワードの繰り返しである辞書に単語のリストがありますが、私はキーワードの数を数えたいと思ったので私は異なる単語のリストが欲しいだけです。キーワードの数を数える方法はありますか、または別の方法で別の単語を探すべきですか?
len(yourdict.keys())
あるいは単に
len(yourdict)
ファイル内のユニークな単語を数えたい場合は、 set
を使用するだけでいいです。
len(set(open(yourdictfile).read().split()))
個別の単語の数(つまり辞書のエントリ数)はlen()
関数を使って見つけることができます。
> a = {'foo':42, 'bar':69}
> len(a)
2
すべての異なる単語(つまりキー)を取得するには、.keys()
メソッドを使用します。
> list(a.keys())
['foo', 'bar']
質問がキーワードの数を数えることに関するものであるならば、それからそのような何かを推薦するでしょう
def countoccurrences(store, value):
try:
store[value] = store[value] + 1
except KeyError as e:
store[value] = 1
return
メイン関数にデータをループしてcountoccurrences関数に値を渡すものがあります。
if __== "__main__":
store = {}
list = ('a', 'a', 'b', 'c', 'c')
for data in list:
countoccurrences(store, data)
for k, v in store.iteritems():
print "Key " + k + " has occurred " + str(v) + " times"
コード出力
Key a has occurred 2 times
Key c has occurred 2 times
Key b has occurred 1 times
辞書でlen()
を直接呼び出すのはうまくいき、それに対してイテレータd.keys()
を構築し、それにlen()
を呼び出すよりも速くなりますが、どちらの速度もあなたのプログラムが行っている他のものと比較して無視できるでしょう。
d = {x: x**2 for x in range(1000)}
len(d)
# 1000
len(d.keys())
# 1000
%timeit len(d)
# 41.9 ns ± 0.244 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit len(d.keys())
# 83.3 ns ± 0.41 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)