簡體   English   中英

如何計算 Python 3 字典中特定值的次數

[英]How to count how many times a specific value in a dictionary of dictionaries in Python 3

我知道這個問題必須有一個非常簡單的解決方案,但我是 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'}

任何幫助深表感謝!

對於您的示例,您有申請人及其數據。 您正在檢查的數據是他們的性別,因此下面的代碼將實現這一點。

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

這將獲得申請人列表中的男性數量。

這是一個計算字典中給定值出現次數的函數:

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') 

我建議稍微重構您的邏輯以使用字典列表。

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']

這將為您提供列表中的所有男性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM