2017-03-16 136 views
-1

在我的经验,这是一个特殊的工作要做。我以许多不同的方式搜索,但仍无法找到答案。 这里的问题是。计算字符频率在短语频率字典python 3

我有中国短语的字典frequency.It样子:

{'中国':18950, '我们':16734, '我国':15400, ...} 

我需要做的是计算每一个人物的频率,例如: 字符“国”在两个词组出现(”中国'和'我国'),所以这个字符的频率应该是:

{'国':(18950+15400)} 

我该如何做到这一点?

+2

到目前为止您尝试过什么? –

+0

@Sagar V我目前还不知道,我刚开始学习编程2周。 –

回答

0

我的方式:

from collections import Counter 

c={'中国':18950, '我们':16734, '我国':15400} 
print(Counter([j for k,v in c.items() for i in k for j in [i]*v])) 

输出:

Counter({'国': 34350, '我': 32134, '中': 18950, '们': 16734}) 
+0

它也可以工作,并自动排序结果,非常感谢! –

0
d = {'中国':18950, '我们':16734, '我国':15400, ...} 

q = 0 
for i in d: 
    if '国' in i: 
     a = (d[i]) 
    q += a 
print(q) 
+0

这不起作用,请再次阅读该问题。 – Julien

+0

@Julien,现在这个工作,并且不需要进口。 –

0

像这样的东西应该工作:

from collections import defaultdict 

char_dict = defaultdict(int) 
for phrase, count in phrase_dict.iteritems(): 
    for char in phrase: 
     char_dict[char] += count 
1

简单的例子,

d = {'abd':2, 'afd':3} 
f = {} 
for key in d: 
    strlen = len(key) 
    for i in range(strlen): 
     if key[i] in f: 
      f[key[i]] += d[key] 
     else: 
      f[key[i]] = d[key] 

print f #gives {'a': 5, 'b': 2, 'd': 5, 'f': 3} 
+0

它完美的作品!非常感谢! –