如何在Python 3中计算字典中某个特定值的次数

时间:2019-01-05 17:51:28

标签: python python-3.x dictionary

我知道这个问题必须有一个非常简单的解决方案,但是我是Python的新手,无法弄清楚该怎么做。

我只想做的是计算一个特定值在这本词典中出现的次数,例如,有多少只雄性。

people = {}
people['Applicant1'] = {'Name': 'David Brown',
                        'Gender': 'Male',
                        'Occupation': 'Office Manager',
                        'Age': '33'}
people['Applicant2'] = {'Name': 'Peter Parker',
                        'Gender': 'Male',
                        'Occupation': 'Postman',
                        'Age': '25'}    
people['Applicant3'] = {'Name': 'Patricia M',
                        'Gender': 'Female',
                        'Occupation': 'Teacher',
                        'Age': '35'}
people['Applicant4'] = {'Name': 'Mark Smith',
                        'Gender': 'Male',
                        'Occupation': 'Unemployed',
                        'Age': '26'}

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

例如,您有申请人及其数据。您要检查的数据是性别,因此下面的代码将完成此操作。

amount = 0                                       # amount of people matching condition
for applicant in people.values():                # looping through all applicants
    if applicant.get('Gender', False) == 'Male': # checks if applicant['Gender'] is 'Male'
                                                 # note it will return False if ['Gender'] wasn't set
        amount += 1                              # adds matching people to amount

这将在申请人列表中获得男性人数。

答案 1 :(得分:0)

这是一个计算字典中给定值出现次数的函数:

def count(dic, val):   
        sum = 0
        for key,value in dic.items():
            if value == val:
                sum += 1
            if type(value) is dict:
                sum += count(dic[key], val)
        return sum

然后您可以按以下方式使用它:

result = count(people, 'Male') 

答案 2 :(得分:0)

我建议您稍微重构一下逻辑以使用字典列表。

people = [
    {
        'Name': 'David Brown',
        'Gender': 'Male',
        'Occupation': 'Office Manager',
        'Age': '33'
    },
    {
        'Name': 'Peter Parker',
        'Gender': 'Male',
        'Occupation': 'Postman',
        'Age': '25'
    },
    {
        'Name': 'Patricia M',
        'Gender': 'Female',
        'Occupation': 'Teacher',
        'Age': '35'
    },
    {
        'Name': 'Mark Smith',
        'Gender': 'Male',
        'Occupation': 'Unemployed',
        'Age': '26'
    }
]

然后您可以使用

之类的逻辑
[applicant for applicant in people if applicant['Gender'] == 'Male']

哪个会给您列表中的所有男性