2017-10-07 10 views
-4

私は文字列をキーとした辞書と値としての文字列を持っています。まず、私の辞書で最も頻繁に使われるキーを探したい。第二に、私は辞書で最も頻繁に価値のあるものを見つけたいと思っています。辞書で最も頻繁に使用されているキーを見つけて、最も頻繁に使用する値を見つける方法

私は、長いテキストの単語を別のキーとして使用し、そのキーの値に単語が属する単語を使用します。

dicts = {"hello":"hey", "hello":"hi", "hey":"hi", "howdy":"hello", "yo":"hi", "hello":"howdy"} 

だから、明らかに、私は私のコードは、「hello」を最も頻繁にキーであることを見つけたい:

しかし、ここでは私の辞書がどのように見えるかの例です。そして、 "hi"が最も頻繁に使われる値です。

私が最も頻繁に鍵を見つけるために、これを試してみました:

from collections import Counter 
c = Counter() 
for d in dicts.values(): 
    c += Counter(d) 

print(c.most_common()) 

をしかし、その後、それは私が私のコードは、最も頻繁に鍵を見つける作る方法を...のように思える最も頻繁に手紙を見つけ、その後、最も頻繁な値ですか?

ありがとうございます!

+0

'cを助けそれぞれのキーがユニークであるため、最も頻繁に使用できるキーはありません。 – abccd

+2

ではありません。最初のdictは無効です。 '' hello ''のような重複キーを持つことはできません: "hey"、 "hello ":" hi "。したがって、ほとんどの共通鍵を見つけることはできません – RomanPerekhrest

答えて

2

辞書には、「最も頻度の高いキー」というものはありません。辞書では、各キーは一意でなければなりません。

from statistics import mode 
most_common = mode(dicts.values()) 
0

まず:あなたは上記のpython 3.4を使用している場合

from collections import Counter 
keys = Counter(dicts.values()) 
mode = keys.most_common(1) 

をまたは:値については、これはうまく動作するはずの一つの鍵は、Pythonでの一つの値だけを持っています。値のリストを保存する場合は、「リスト」を使用してください 頻度を計算するためにすべての値を取得する場合は、my_dict.values()を使用してください。辞書内のすべての値のリストが返されます。 は、このループはカウントし、別の辞書にそれを保存します:

frequency = {} 
for value in my_dict.values() : 
    if value in frequency : 
     frequency[value] = frequency[value] + 1 
    else : 
     frequency[value] = 1 
0

最も一般的な値を見つけるには、私はちょうど辞書マッピング

#most common key 
val1 = max(dicts, key=dicts.get) 

#most common value 
inv_dicts = {v: k for k, v in dicts.items()} 
val2 = max(inv_dicts, key=inv_dicts.get) 

希望を逆転してきたこれは=

関連する問題