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

如何实现统计多列表元素出现次数的函数?当前代码返回空字典

问题:统计多列表元素出现次数却返回空字典

你的代码存在两个核心问题,导致返回空字典:

  1. 完全未使用传入的列表参数:函数uniqueOccurrence接收了item1, item2, item3三个列表参数,但代码里根本没处理这些数据,反而去遍历一个刚初始化的空字典d——空字典没有任何元素,循环体直接跳过,自然不会生成统计结果。
  2. 统计逻辑的遍历对象错误:即使你想统计元素,也应该遍历需要统计的列表元素,而不是空字典本身。

修正方案1:合并列表后遍历统计

把三个输入列表合并成一个大列表,再逐个元素统计出现次数:

def uniqueOccurrence(item1, item2, item3):
    d = {}
    # 合并所有传入的列表
    all_elements = item1 + item2 + item3
    for elem in all_elements:
        if elem in d:
            d[elem] += 1
        else:
            d[elem] = 1
    return d

def main():
    list1 = [1]
    list2 = [1,2]
    list3 = [1,2,3]
    print(uniqueOccurrence(list1, list2, list3))  # 输出: {1: 3, 2: 2, 3: 1}
    
if __name__ == "__main__":
    main()

修正方案2:逐个遍历列表+简化统计逻辑

用dict.get()方法简化判断逻辑,同时逐个处理每个输入列表:

def uniqueOccurrence(item1, item2, item3):
    d = {}
    # 遍历每个输入列表
    for lst in [item1, item2, item3]:
        for elem in lst:
            # 若元素不存在则默认返回0,加1后赋值
            d[elem] = d.get(elem, 0) + 1
    return d

def main():
    list1 = [1]
    list2 = [1,2]
    list3 = [1,2,3]
    print(uniqueOccurrence(list1, list2, list3))  # 输出: {1: 3, 2: 2, 3: 1}
    
if __name__ == "__main__":
    main()

修正方案3:用标准库collections.Counter快速实现

Python标准库的Counter专门用于统计元素出现次数,代码更简洁高效:

from collections import Counter

def uniqueOccurrence(item1, item2, item3):
    # 合并列表后用Counter统计,再转成普通字典
    return dict(Counter(item1 + item2 + item3))

def main():
    list1 = [1]
    list2 = [1,2]
    list3 = [1,2,3]
    print(uniqueOccurrence(list1, list2, list3))  # 输出: {1: 3, 2: 2, 3: 1}
    
if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:42:28