2017-10-07 62 views
-4

我有一个字符串作为键的字典,还有字符串作为值。首先,我想在我的字典中找到最常用的密钥。其次,我想在我的字典中找到最常用的值。如何查找字典中最频繁的键,然后是最常见的值

我有很多来自长文本的单词作为不同的键,然后给这个单词所属的词类赋予一个值。

但这里是什么我的字典里可能看起来像一个例子:

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

所以,很显然,我希望我的代码,发现“你好”是最常见的关键。而那个“嗨”是最常见的价值。

我已经尝试了本找到最频繁的关键:

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

nope,最初的dict是无效的 - 你不能有像“hello”这样的重复键:“hey”,“hello “:” 喜“'。因此,你根本找不到最常见的密钥 – RomanPerekhrest

回答

2

字典中没有“最常用的键”这样的东西。在字典中,每个关键字必须是唯一的。至于价值观,这应该只是罚款:

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

或者,如果你正在使用python 3.4及以上版本:

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

一:一个键只有一个在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) 

希望这有助于