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

Python如何统计对象列表中满足指定属性条件的元素个数?

Python 标准库没有直接提供你示例中带key参数的count函数,但可以通过标准库内置工具组合实现等价效果,常用实现方案有两种:

方案1:用sum+生成器表达式(最简便,单次统计优先用)

这种写法不需要额外导入依赖,内存效率高于你当前使用的列表推导写法(不会生成临时列表占用额外内存):

count_a = sum(1 for o in l if o.a == 1)
assert count_a == 4

方案2:用collections.Counter+operator.attrgetter(适配你想要的attrgetter调用逻辑,适合多次统计不同属性值数量的场景)

如果需要批量统计不同属性值的出现次数,可以用标准库的Counter实现:

from operator import attrgetter
from collections import Counter

# 统计所有a属性值的出现次数
a_counter = Counter(map(attrgetter('a'), l))
# 取a=1的数量
print(a_counter[1]) # 输出4

自定义封装成你需要的调用形式

如果要完全实现你示例中的count调用方式,只需简单封装几行代码即可:

from operator import attrgetter

def count(iterable, key, target):
    return sum(1 for item in iterable if key(item) == target)

# 调用效果
print(count(l, key=attrgetter('a'), target=1)) # 输出4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:09:01