python列表.计数始终返回0

2024-09-28 05:38:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很长的Python列表,想计算一个字符出现的次数。例如,“o”总共发生了多少次?我要N=4。在

lexicon = ['yuo', 'want', 'to', 'sioo', 'D6', 'bUk', 'lUk'], etc.

在列表.计数()是显而易见的解决办法。但是,它始终返回0。我找哪个角色都无所谓。我已经仔细检查了我的文件-我要搜索的字符肯定在那里。我碰巧在for循环中计算count():

^{pr2}$

但它在for循环之外,也在列表“lexicon”上返回0。我不想要一份总计数的清单,所以我认为计数器不起作用。在

有什么想法?在


Tags: to列表foretc字符次数计数want
3条回答

如果我们接受您的list(您提供的缩短版本):

lexicon = ['yu', 'want', 'to', 'si', 'D6', 'bUk', 'lUk']

然后我们可以使用sum()generator-expression来获得计数:

^{pr2}$

因此,如果c'k',这将得到{},因为{}有两次出现。在


这将在for-loop中工作,因此您应该能够自己将其合并到更广泛的代码中。在


通过您的最新编辑,我可以确认这会为您修改的列表中的4生成一个4的计数。在

如果我没听错你的问题,你想计算一下列表中每个单词每个字符出现的次数。这被称为频率分布。在

下面是一个使用Counter的简单实现

from  collections import Counter
lexicon = ['yu', 'want', 'to', 'si', 'D6', 'bUk', 'lUk']
chars = [char for word in lexicon for char in word]
freq_dist = Counter(chars)
Counter({'t': 2, 'U': 2, 'k': 2, 'a': 1, 'u': 1, 'l': 1, 'i': 1, 'y': 1, 'D': 1, '6': 1, 'b': 1, 's': 1, 'w': 1, 'n': 1, 'o': 1})

使用freq_dist,可以返回一个字符的出现次数。在

^{pr2}$

它给零是因为sample.count('K')将匹配k作为字符串。它不会考虑buk或{}。 如果你想计算字符的频率,就这样

for i in range(100): 
     # random sample 500 words 
     sample = list(set(random.sample(lexicon, 500)))
     C1 = ['k']
     total = sum(len(i) for i in sample) # total words
     sample_count=sum([x.count(C1) for x in sample])
     sample_count_C1 = sampl_count / total

相关问题 更多 >

    热门问题