所以我有一个单词列表` `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‘
发布于 2011-06-15 12:37:55
cnt = Counter()
for words in wordList:
for letters in set(words):
cnt[letters]+=1
发布于 2011-06-15 12:39:16
添加set
调用:
cnt = Counter()
for word in wordList:
for letter in set(word):
cnt[letter]+=1
发布于 2011-06-15 13:22:28
在itertools
中使用迭代器组合器的另一种方法
import collections
import itertools
cnt = collections.Counter(itertools.chain.from_iterable(itertools.imap(set, wordList)))
https://stackoverflow.com/questions/6353049
复制相似问题