2016-07-25 79 views
0

我想要做的是比较每个字的第一个字母与 小写字母az和字母打印(类似于word_frequency)多少个 次字用拼音 的每个字母(如本)开始无法获得计数器来比较第一个字母的字母AZ字母表

a = 0 b = 2, c = 0, d = 2 ------------ y = 1, z = 0 

但我无法找到一种方法,通过计数器来做到这一点作为尚未或发现任何东西,对我来说(初级)工作。我的想法是沿线

for w in word_count: 
     l_freq = [] 
     l_freq.append(w[0]) 

然后比较反对它呢?但不知道如何与整个字母表比较,而不仅仅是字符串中的字母?

此外,有没有什么方法可以打印频率清洁器?没有柜台和括号出现?

from collections import Counter 

def function(): 
    string = "This is a string written in python." 
    word_count = string.split() 

    char_count = 0 

    for char in string: 
     if char != " " and char != ".": 
      char_count += 1 

    word_freq = Counter(word_count) 

    print "Word count: " + str(len(word_count)) 
    print "Average length of word: " + str(char_count/len(word_count)) 
    print "" 
    print "Word frequency: " 
    print word_freq 

回答

0

比方说,我们有一些像这样的测试数据:

In [1]: test_data = ''' 
    ...: hello 
    ...: hi 
    ...: goodbye 
    ...: bye 
    ...: Bye! 
    ...: lol 
    ...: lmao 
    ...: rofl 
    ...: ''' 

要计算每个单词的第一个字母,你可以这样做:

counter = Counter(w[0] for w in test_data.split()) 

这你基本上在做。为了获得预期的输出I 认为你想要的,你只需要每一个小写字母,其数量,(import string如果您还没有)关联像这样:

for letter in string.ascii_lowercase: 
    print letter, '=', counter[letter] 

这对于测试数据显示,我给你:

a = 0 
b = 1 
c = 0 
d = 0 
e = 0 
f = 0 
g = 1 
h = 2 
i = 0 
j = 0 
k = 0 
l = 2 
m = 0 
n = 0 
o = 0 
p = 0 
q = 0 
r = 1 
s = 0 
t = 0 
u = 0 
v = 0 
w = 0 
x = 0 
y = 0 
z = 0 
+0

谢谢你的快速反应如此之多现在就会尝试,如果它的工作将立即标记为解决方案! – LiamSutton