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

如何统计Python字典列表中相似值的数量?以男性用户统计为例

统计字典列表中男性用户数量的几种方法

针对你给出的用户列表,这里有几种简单的方法可以统计男性(gender为'm')用户的数量:

1. 基础循环计数(适合新手理解)

最直观的方式就是初始化一个计数器,遍历列表里的每个用户字典,逐个判断性别是否为'm',符合条件就给计数器加1:

user_list = [
    {'name': 'Alizom_12',
     'gender': 'f',
     'age': 34,
     'active_day': 170},
    {'name': 'Xzt4f',
     'gender': None,
     'age': None,
     'active_day': 1152},
    {'name': 'TomZ',
     'gender': 'm',
     'age': 24,
     'active_day': 15},
    {'name': 'Zxd975',
     'gender': None,
     'age': 44,
     'active_day': 752},
]

male_count = 0
for user in user_list:
    # 明确判断gender等于'm',避免把None或其他值误算
    if user.get('gender') == 'm':
        male_count += 1

print(male_count)  # 输出: 1

这里用user.get('gender')而不是直接user['gender'],是为了防止某些字典里没有gender键时抛出异常,更稳妥。

2. 列表推导式(简洁写法)

用列表推导式生成所有符合条件的用户列表,再用len()获取长度,一行代码就能搞定:

male_count = len([user for user in user_list if user.get('gender') == 'm'])
print(male_count)  # 输出: 1

3. 使用filter()函数

filter()可以过滤出符合条件的元素,配合len()也能快速得到数量:

male_count = len(list(filter(lambda u: u.get('gender') == 'm', user_list)))
print(male_count)  # 输出: 1

不过这种写法对新手来说可能不如前两种直观,适合熟悉lambda表达式后使用。

注意点

要注意列表里存在gender为None的情况,所以判断时一定要明确等于'm',不要用user.get('gender') != 'f'这类逻辑,否则会把None也当成男性统计进去,结果就错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:36:12