用字典计算字母频率
counting letter frequency with a dict
我正在尝试查找没有 Counter.And 的字母的频率代码将输出字典形式的结果。到目前为止我所做的是让程序计算单词频率而不是 letter/character 频率。如果有人能指出我在此代码中的错误,那就太好了。谢谢你。
它应该看起来像这样:
{'a':2,'b':1,'c':1,'d':1,'z':1}
**但这是我实际得到的:
{'abc':1,'az':1,'ed':1}
**我的代码如下
word_list=['abc','az','ed']
def count_letter_frequency(word_list):
letter_frequency={}
for word in word_list:
keys=letter_frequency.keys()
if word in keys:
letter_frequency[word]+=1
else:
letter_frequency[word]=1
return letter_frequency
这是正确的代码:
word_list=['abc','az','ed']
def count_letter_frequency(word_list):
letter_frequency={}
for word in word_list:
for letter in word:
keys=letter_frequency.keys()
if letter in keys:
letter_frequency[letter]+=1
else:
letter_frequency[letter]=1
return letter_frequency
您正在遍历列表并且列表包含单词。因此,您将单词作为字典中的关键字。因此,您必须添加另一个 for 循环来遍历每个单词中的字母。
这是否可以接受:
flat = ''.join(word_list)
{l: flat.count(l) for l in set(flat)}
#{'a': 2, 'b': 1, 'c': 1, 'd': 1, 'e': 1, 'z': 1}
如果您希望在 for
循环中执行此操作,请执行以下操作:
flat = ''.join(word_list)
result = {}
for l in flat:
if l in result:
result[l] += 1
else:
result[l] = 1
from collections import Counter
print Counter(''.join(word_list))
# Counter({'a': 2, 'c': 1, 'b': 1, 'e': 1, 'd': 1, 'z': 1})
如果你不想使用计数器,也可以自己计算元素。
from collections import defaultdict
d = defaultdict(int)
for c in ''.join(word_list):
d[c] += 1
print d
# defaultdict(<type 'int'>, {'a': 2, 'c': 1, 'b': 1, 'e': 1, 'd': 1, 'z': 1})
我正在尝试查找没有 Counter.And 的字母的频率代码将输出字典形式的结果。到目前为止我所做的是让程序计算单词频率而不是 letter/character 频率。如果有人能指出我在此代码中的错误,那就太好了。谢谢你。 它应该看起来像这样:
{'a':2,'b':1,'c':1,'d':1,'z':1}
**但这是我实际得到的:
{'abc':1,'az':1,'ed':1}
**我的代码如下
word_list=['abc','az','ed']
def count_letter_frequency(word_list):
letter_frequency={}
for word in word_list:
keys=letter_frequency.keys()
if word in keys:
letter_frequency[word]+=1
else:
letter_frequency[word]=1
return letter_frequency
这是正确的代码:
word_list=['abc','az','ed']
def count_letter_frequency(word_list):
letter_frequency={}
for word in word_list:
for letter in word:
keys=letter_frequency.keys()
if letter in keys:
letter_frequency[letter]+=1
else:
letter_frequency[letter]=1
return letter_frequency
您正在遍历列表并且列表包含单词。因此,您将单词作为字典中的关键字。因此,您必须添加另一个 for 循环来遍历每个单词中的字母。
这是否可以接受:
flat = ''.join(word_list)
{l: flat.count(l) for l in set(flat)}
#{'a': 2, 'b': 1, 'c': 1, 'd': 1, 'e': 1, 'z': 1}
如果您希望在 for
循环中执行此操作,请执行以下操作:
flat = ''.join(word_list)
result = {}
for l in flat:
if l in result:
result[l] += 1
else:
result[l] = 1
from collections import Counter
print Counter(''.join(word_list))
# Counter({'a': 2, 'c': 1, 'b': 1, 'e': 1, 'd': 1, 'z': 1})
如果你不想使用计数器,也可以自己计算元素。
from collections import defaultdict
d = defaultdict(int)
for c in ''.join(word_list):
d[c] += 1
print d
# defaultdict(<type 'int'>, {'a': 2, 'c': 1, 'b': 1, 'e': 1, 'd': 1, 'z': 1})