2016-10-14 8 views
1

単語が何回発生したかをマップするwordCountsという辞書がありますが、nという単語を辞書に入れてもいいですか?nはネクタイがあればどうですか?Python辞書のトップ値を取得

+0

「トップ」とは、単語数が最も多いと思いますか? – Soviut

+0

あなたがこれまでに試したことを示してください。 – Soviut

+0

@ソビエットはい、それは正しいです。私はPythonを一度も使用していないし、このための関数が組み込まれているかもしれないという気持ちがある。 – Clip

答えて

2

前述の回答では、Counterとしてキャストして、このデータセットを扱いやすくしています。

>>> from collections import Counter 
>>> d = {"d":1,"c":2,"a":3,'b':3,'e':0,'f':1} 
>>> c = Counter(d) 
>>> c 
Counter({'b': 3, 'a': 3, 'c': 2, 'f': 1, 'd': 1, 'e': 0}) 

Countern最も一般的な要素になりますmost_common(n)方法があります。 の関係を除外します。したがって:

>>> c.most_common(4) 
[('b', 3), ('a', 3), ('c', 2), ('f', 1)] 

はn番目の要素に等しいすべての値が含まれ、あなたはCounterに変換せずに、次のような何かを行うことができます。これはかなり面倒ですが、それはトリックを行う必要があります。

>>> d = {'b': 3, 'a': 3, 'c': 2, 'f': 1, 'd': 1, 'e': 0} 
>>> most_common_inclusive(d, 4) 
{'d': 1, 'b': 3, 'c': 2, 'f': 1, 'a': 3} 
1

一つの解決策は次のようになります:

from collections import Counter, defaultdict 


list_of_words = ['dog', 'cat', 'moo', 'dog', 'pun', 'pun'] 
def get_n_most_common(n, list_of_words): 
    ct = Counter(list_of_words) 
    d = defaultdict(list) 
    for word, quantity in ct.items(): 
     d[quantity].append(word) 
    most_common = sorted(d.keys(), reverse= True) 
    return [(word, val) for val in most_common[:n] for word in d[val]] 

やテスト:

>> get_n_most_common(2, list_of_words) 
=> [('pun', 2), ('dog', 2), ('moo', 1), ('cat', 1)] 
>> get_n_most_common(1, list_of_words) 
=> [('pun', 2), ('dog', 2)] 
1

MooingRawrは正しい軌道に乗っている、次のようにあなたが使用することができます

from collections import Counter 

def most_common_inclusive(freq_dict, n): 
    # find the nth most common value 
    nth_most_common = sorted(c.values(), reverse=True)[n-1] 
    return { k: v for k, v in c.items() if v >= nth_most_common } 

しかし、今我々はトップを取得する必要がありますn結果

l = [] 
for i, (word, count) in enumerate(sorted(d.items(), reverse=True, key=lambda x: x[1])): 
    if i >= n and count<l[-1][1]: 
     break 
    l.append((word, count)) 
+1

私は列挙型(...)で 'for i、(word、count)'に修正し、 'i> = n'を使用します。 – brianpck

+0

@brianpck優秀な点。私は良い方法があることを知っていたが、今日は私にとっては遅い日だった –

関連する問題