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

Python 如何遍历列表与字典,统计指定元素频率存入单独列表

你的两种写法都没有更新字典的计数逻辑,全程读取的是字典初始的0值,因此得不到正确结果。另外你给出的预期输出['NIEP':2,'IJFE':1]不符合Python语法,列表不能存储键值对结构,你可以根据需求选择「统计结果字典」或者「由(键,计数)元组组成的列表」两种格式。

实现方法

方法1:基础循环实现(无需第三方库)

先遍历待统计的列表,匹配字典键时累加计数,再将结果转为你需要的格式:

a = ['NIEP','LOAS','IJFE','NIEP'] 
di = {'NIEP':0,'IJFE':0} 

# 第一步:统计匹配元素的出现次数
for item in a:
    if item in di:
        di[item] += 1

# 如果你需要(键, 计数)元组组成的列表
b = list(di.items())
# 输出:[('NIEP', 2), ('IJFE', 1)]

# 如果你需要键值对格式的统计结果,直接赋值即可
# b = di
# 输出:{'NIEP': 2, 'IJFE': 1}

方法2:用内置Counter简化统计

使用Python标准库collections.Counter可以更简洁地完成计数:

from collections import Counter

a = ['NIEP','LOAS','IJFE','NIEP'] 
di = {'NIEP':0,'IJFE':0} 

# 统计全列表的元素频率
total_counts = Counter(a)
# 只保留字典di中存在的键的统计结果
b = {k: total_counts[k] for k in di}

# 同样如果需要列表格式,转成items即可:b = list(b.items())

原有写法的问题说明

  • 第一种写法:遍历字典键时仅判断元素是否存在于列表,直接读取字典初始的0值存入列表,没有执行计数累加逻辑,因此返回[0,0]
  • 第二种列表推导式:遍历列表元素时仅匹配字典键,同样读取初始0值存入列表,列表长度等于匹配上的元素个数(3个),因此返回[0,0,0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:18:02