如何统计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
相关产品推荐
相关产品推荐

