是否有方法计算字典中类似值的数量,例如,我有一个由不同用户及其名称、性别、年龄组成的列表.如果我想数数名单上的男性数量,该怎么做?
我知道这听起来可能很傻,但我对python还不熟悉,我正在尝试更多地了解它。
这是一个清单,如果有帮助的话:
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},
] 发布于 2022-08-04 09:26:46
下面是两个性别计数示例的解决方案:
n_males = sum(1 for user in user_list if user['gender'] == 'm')
print(n_males )使用计数器
from collections import Counter
counts = Counter((user['gender'] for user in user_list))
print(counts)发布于 2022-08-04 09:26:38
您可以创建如下函数:
def count_gender(lst, gender):
count=0
for dictionary in lst:
if dictionary["gender"] == gender:
count+=1
return count然后将清单和期望的性别传递给它:
number = count_gender(user_list, "m")
print(number)发布于 2022-08-04 09:28:09
您可以使用sum函数。
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},
]
print(sum(user["gender"] == "m" for user in user_list))我给出了一个list comprehension in参数来过滤属性gender设置为m的用户。您可以很容易地创建一个函数来提高操作的效率。
def count_by_attribute(my_list: List, attribute: str, value: Any) -> int:
return sum(o[attribute] == value for o in my_list)https://stackoverflow.com/questions/73233329
复制相似问题