You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:遍历未排序数组时统计元素的增量出现次数

解决实时增量统计单词出现次数的问题

嘿,我完全懂你的困扰——collections.Counter()确实是统计单词总出现次数的利器,但要实现遍历过程中实时记录每个单词当前累计出现次数的需求,它就不太够用了。咱来看看怎么用简单的方法搞定这个问题:

核心思路

不用先统计总数,而是在遍历原数组的同时,用一个普通字典来实时追踪每个单词的出现次数:

  • 每遇到一个单词,先更新它在字典里的计数(如果是第一次出现就设为1,否则加1)
  • 把更新后的计数直接添加到结果数组里

代码示例

from typing import List

def generate_incremental_count_array(words: List[str]) -> List[int]:
    current_counts = {}
    result = []
    for word in words:
        # 更新当前单词的实时计数
        current_counts[word] = current_counts.get(word, 0) + 1
        # 将当前计数加入结果数组
        result.append(current_counts[word])
    return result

# 测试示例
test_words = ["apple", "banana", "apple", "orange", "banana", "apple"]
print(generate_incremental_count_array(test_words))
# 输出结果: [1, 1, 2, 1, 2, 3]

为什么Counter不适用?

你之前尝试用Counter生成的字典再遍历数组,得到的只会是每个单词的总出现次数,而不是到当前位置的累计次数。比如上面测试用例里的第三个"apple",Counter会返回3,但我们需要的是它在这个位置的累计次数2——这就是两者的核心区别。

而上面的方法是边遍历边计数,每一步都记录当前的状态,完美匹配你的需求。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:27:42