Python - 统计单词列表中每个字母出现次数

1 投票
7 回答
20417 浏览
提问于 2025-04-16 19:35

我有一个单词列表 `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

撰写回答