2017-10-07 1 views
-4

키를 문자열로 사용하는 사전과 값을 문자열로 사용합니다. 첫째, 나는 사전에서 가장 빈번한 키를 찾고 싶다. 둘째, 나는 사전에서 가장 빈번한 가치를 찾고 싶다.사전에서 가장 자주 사용하는 키를 찾는 방법과 자주 사용하는 값을 찾는 방법

나는 긴 텍스트의 단어가 다른 키로 많고 그 키의 값이 단어의 어떤 부분을 차지하고 있는지 알고있다.

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

그래서, 분명히, 나는 내 코드 "안녕하세요"가장 빈번한 중요한 것을 발견 할 :

그러나 여기 내 사전 모습입니다. 그리고 "hi"가 가장 빈번한 가치입니다. 내 코드가 가장 빈번한 키를 찾을 수 있도록하고 ... 어떻게

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

print(c.most_common()) 

하지만, 그것은 보인다 가장 자주 문자를 찾습니다

내가 가장 자주 키를 찾으려면이 시도했다 이후 가장 빈번한 가치?

감사합니다.

+0

'C 형 = 도움 Counter (ordbok.values ​​())'와 가장 빈번한 키는 각각의 키가 고유하기 때문에 불가능합니다. – abccd

+2

아니요, 초기 dict은 유효하지 않습니다. - "hello"와 같은 중복 키를 가질 수 없습니다 : "hey", "hello ":"안녕 ". 따라서 가장 일반적인 키를 전혀 찾을 수 없습니다. – RomanPerekhrest

답변

2

"가장 빈번한 키"와 같은 것이 사전에 없습니다. 사전에는 각 키가 고유해야합니다.

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

첫째 : 위 파이썬 3.4을 사용하는 경우

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

을 또는 : 값에 관해서는,이 잘 작동해야 하나 키는 파이썬에서 하나의 값을 갖는다. 값의 목록을 저장하려면 "목록"을 사용하십시오. 모든 값을 얻기 위해 주파수를 계산하려면 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) 

희망이

관련 문제