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

如何快速统计Python字典列表中is_pass字段的True/False数量?

快速统计字典列表中is_pass字段的布尔值数量

方案1:用sum结合生成器表达式(最简洁)

利用Python中布尔值等价于整数(True=1,False=0)的特性,一行代码就能统计目标值数量:

my_list = [{'is_pass':True},{'is_pass':True},{'is_pass':False},{'is_pass':False},{'is_pass':True},{'is_pass':True}]

total = len(my_list)
pass_count = sum(d['is_pass'] for d in my_list)
fail_count = total - pass_count
# 也可以直接计算失败数:sum(not d['is_pass'] for d in my_list)

print(total, pass_count, fail_count)  # 输出:6 4 2

方案2:用collections.Counter(适合多维度统计)

你之前用Counter失败,是因为直接把整个字典列表传给了它——它默认统计的是列表里的字典元素出现次数,而非字典内的is_pass值。正确做法是先提取所有is_pass的取值,再传入Counter:

from collections import Counter

my_list = [{'is_pass':True},{'is_pass':True},{'is_pass':False},{'is_pass':False},{'is_pass':True},{'is_pass':True}]

cnt = Counter(d['is_pass'] for d in my_list)
total = len(my_list)
pass_count = cnt[True]
fail_count = cnt[False]

print(total, pass_count, fail_count)  # 输出:6 4 2

为什么直接用count无效?

list.count(item)是统计列表中完全等于item的元素出现次数。你的列表元素是字典(比如{'is_pass':True}),和布尔值True不是同一对象,所以my_list.count(True)会返回0,无法得到预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:40:25