Python - 统计单词列表中每个字母出现次数
我有一个单词列表 `wordList = list()`。现在,我用这段代码在整个列表中统计每个单词里的每个字母。
cnt = Counter()
for words in wordList:
for letters in words:
cnt[letters]+=1
不过,我想要的统计方式不一样。我希望这个函数能找出列表中最常见的字母,但每个单词里的每个字母只算一次(也就是说,不考虑某些单词里同一个字母出现多次的情况)。
举个例子,如果列表里有“happy、harpy 和 hasty”,那么“happy”中的两个 p 只应该算一次。所以这个函数应该返回一个字母出现频率最高的列表(按顺序排列),而且不重复计算。在这个例子中,结果应该是“h、a、p、y、r、s”。
7 个回答
3
这里介绍了一种使用 itertools
中的迭代器组合的方法:
import collections
import itertools
cnt = collections.Counter(itertools.chain.from_iterable(itertools.imap(set, wordList)))
6
添加一个 set
调用:
cnt = Counter()
for word in wordList:
for letter in set(word):
cnt[letter]+=1
7
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念,或者在写代码时犯了一些小错误。
例如,变量就是一个很重要的概念。简单来说,变量就像一个储物箱,我们可以把数据放进去,随时取出来使用。每个变量都有一个名字,方便我们记住里面装的是什么。
还有,函数也是编程中的一个重要部分。可以把函数想象成一个小工具,它可以完成特定的任务。我们只需要告诉它要做什么,然后它就会按照我们的指示去工作。
当我们写代码时,可能会遇到错误信息。这些错误信息就像是程序在告诉我们:“嘿,我遇到问题了,请帮我看看!”我们需要仔细阅读这些信息,找出问题所在,然后进行修正。
总之,编程就像是解决谜题,我们需要不断尝试、学习和调整,才能让代码顺利运行。
cnt = Counter()
for words in wordList:
for letters in set(words):
cnt[letters]+=1