在Python中计数相同字符串

4 投票
5 回答
2045 浏览
提问于 2025-04-17 07:35

我有一个字符串的列表,其中有些字符串是相同的。我需要一个脚本来计算这些相同的字符串。比如:

我有一个包含一些单词的列表:

"房子"
"梦想"
"树"
"树"
"房子"
"天空"
"房子"

然后输出应该是这样的:

"房子" - 3
"树" - 2
"梦想" - 1
等等

5 个回答

3

在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够好,或者是我们对某些概念理解得不够透彻。比如,有人可能会在使用某个函数时,发现它的表现和预期不一样。这种情况可能是因为我们没有正确地使用这个函数,或者是没有理解它的工作原理。

解决这些问题的一个好方法是查看相关的文档或者社区讨论,比如StackOverflow。在那里,很多人会分享他们的经验和解决方案,帮助我们更好地理解代码的使用方式。

总之,遇到问题时,不要着急,先查查资料,看看别人是怎么解决的,慢慢你就会掌握更多的知识和技巧。

from collections import defaultdict
counts = defaultdict(int)
for s in strings:
    counts[s] += 1
for (k, v) in counts.items():
    print '"%s" - %d' % (k, v)
4

解决方案

这非常简单(words 是你想处理的单词列表):

result = {}
for word in set(words):
    result[word] = words.count(word)

这个方法不需要任何额外的模块。

测试

对于以下的 words 值:

words = ['House', 'Dream', 'Tree', 'Tree', 'House', 'Sky', 'House']

它会给你以下结果:

>>> result
{'Dream': 1, 'House': 3, 'Sky': 1, 'Tree': 2}

这个答案能解决你的问题吗?

8

使用 collections.Counter()。这个工具就是为了处理这种情况而设计的:

>>> import collections
>>> seq = ["House", "Dream", "Tree", "Tree", "House", "Sky", "House"]
>>> for word, cnt in collections.Counter(seq).most_common():
        print repr(word), '-', cnt

'House' - 3
'Tree' - 2
'Sky' - 1
'Dream' - 1

撰写回答