我需要幫助撰寫 for 回圈來將元素在資料集中出現的次數添加到字典理解的值中。
這是示例資料集:
salary_data =
{'Age': '39', 'Education': 'E - Bachelors', 'Occupation': 'Adm-clerical', 'Relationship': 'Not-in-family', 'Race': 'White', 'Sex': 'Male', 'Target': '<=50K'}
{'Age': '50', 'Education': 'E - Bachelors', 'Occupation': 'Exec-managerial', 'Relationship': 'Husband', 'Race': 'White', 'Sex': 'Male', 'Target': '<=50K'}
{'Age': '38', 'Education': 'B - HS Diploma', 'Occupation': 'Handlers-cleaners', 'Relationship': 'Not-in-family', 'Race': 'White', 'Sex': 'Male', 'Target': '<=50K'}
{'Age': '53', 'Education': 'A - No HS Diploma', 'Occupation': 'Handlers-cleaners', 'Relationship': 'Husband', 'Race': 'Black', 'Sex': 'Male', 'Target': '<=50K'}
{'Age': '28', 'Education': 'E - Bachelors', 'Occupation': 'Prof-specialty', 'Relationship': 'Wife', 'Race': 'Black', 'Sex': 'Female', 'Target': '<=50K'}
{'Age': '37', 'Education': 'F - Graduate Degree', 'Occupation': 'Exec-managerial', 'Relationship': 'Wife', 'Race': 'White', 'Sex': 'Female', 'Target': '<=50K'}
{'Age': '49', 'Education': 'A - No HS Diploma', 'Occupation': 'Other-service', 'Relationship': 'Not-in-family', 'Race': 'Black', 'Sex': 'Female', 'Target': '<=50K'}
{'Age': '52', 'Education': 'B - HS Diploma', 'Occupation': 'Exec-managerial', 'Relationship': 'Husband', 'Race': 'White', 'Sex': 'Male', 'Target': '>50K'}
{'Age': '31', 'Education': 'F - Graduate Degree', 'Occupation': 'Prof-specialty', 'Relationship': 'Not-in-family', 'Race': 'White', 'Sex': 'Female', 'Target': '>50K'}
{'Age': '42', 'Education': 'E - Bachelors', 'Occupation': 'Exec-managerial', 'Relationship': 'Husband', 'Race': 'White', 'Sex': 'Male', 'Target': '>50K'}
并給出了獨特的教育水平串列:
unique_education_levels=
['A - No HS Diploma',
'B - HS Diploma',
'C - Some College',
'D - Associates',
'E - Bachelors',
'F - Graduate Degree']
我需要創建一個名為 education_level_frequencies 的字典,其中鍵是唯一的教育水平,值是教育水平在資料集中出現的次數。
到目前為止,我使用字典理解來創建值為 0 的字典。
education_level_frequencies = [{level: 0} for level in unique_education_levels]
我正在嘗試使用 for 回圈遍歷資料集并將 1 添加到 education_level_frequencies 鍵無濟于事。
for entry in salary_data:
if entry['Education'] == education_level_frequencies:
education_level_frequencies[entry] = 1
uj5u.com熱心網友回復:
對于 for 回圈,您可能想表達的意思是:
for entry in salary_data:
if entry['Education'] in education_level_frequencies:
education_level_frequencies[entry['Education'] = 1
uj5u.com熱心網友回復:
它看起來unique_education_levels是多余的,因為字典中的鍵必須是唯一的。
您可以使用 collections.Counter或collections.defaultdict:
from collections import Counter, defaultdict
salary_data = [
{'Age': '39', 'Education': 'E - Bachelors', 'Occupation': 'Adm-clerical', 'Relationship': 'Not-in-family', 'Race': 'White', 'Sex': 'Male', 'Target': '<=50K'},
{'Age': '50', 'Education': 'E - Bachelors', 'Occupation': 'Exec-managerial', 'Relationship': 'Husband', 'Race': 'White', 'Sex': 'Male', 'Target': '<=50K'},
{'Age': '38', 'Education': 'B - HS Diploma', 'Occupation': 'Handlers-cleaners', 'Relationship': 'Not-in-family', 'Race': 'White', 'Sex': 'Male', 'Target': '<=50K'},
{'Age': '53', 'Education': 'A - No HS Diploma', 'Occupation': 'Handlers-cleaners', 'Relationship': 'Husband', 'Race': 'Black', 'Sex': 'Male', 'Target': '<=50K'},
{'Age': '28', 'Education': 'E - Bachelors', 'Occupation': 'Prof-specialty', 'Relationship': 'Wife', 'Race': 'Black', 'Sex': 'Female', 'Target': '<=50K'},
{'Age': '37', 'Education': 'F - Graduate Degree', 'Occupation': 'Exec-managerial', 'Relationship': 'Wife', 'Race': 'White', 'Sex': 'Female', 'Target': '<=50K'},
{'Age': '49', 'Education': 'A - No HS Diploma', 'Occupation': 'Other-service', 'Relationship': 'Not-in-family', 'Race': 'Black', 'Sex': 'Female', 'Target': '<=50K'},
{'Age': '52', 'Education': 'B - HS Diploma', 'Occupation': 'Exec-managerial', 'Relationship': 'Husband', 'Race': 'White', 'Sex': 'Male', 'Target': '>50K'},
{'Age': '31', 'Education': 'F - Graduate Degree', 'Occupation': 'Prof-specialty', 'Relationship': 'Not-in-family', 'Race': 'White', 'Sex': 'Female', 'Target': '>50K'},
{'Age': '42', 'Education': 'E - Bachelors', 'Occupation': 'Exec-managerial', 'Relationship': 'Husband', 'Race': 'White', 'Sex': 'Male', 'Target': '>50K'},
]
education_level_frequencies = Counter() # or defaultdict(int)
for entry in salary_data:
education_level_frequencies[entry['Education']] = 1
education_level_frequencies = dict(education_level_frequencies)
# Equivalent one liner to above:
# education_level_frequencies = dict(Counter(entry['Education'] for entry in salary_data))
print(education_level_frequencies)
或者,get()如果您只想使用標準 python 字典,也可以使用該方法:
education_level_frequencies = {}
for entry in salary_data:
education_val = entry['Education']
education_level_frequencies[education_val] = education_level_frequencies.get(
education_val, 0) 1
print(education_level_frequencies)
輸出:
{'E - Bachelors': 4, 'B - HS Diploma': 2, 'A - No HS Diploma': 2, 'F - Graduate Degree': 2}
uj5u.com熱心網友回復:
你可以做這樣的事情。
education_level_frequencies = defaultdict(int)
for data in salary_data:
education = data['Education']
education_level_frequencies[education] = int(education in unique_education_levels)
在這里,我們將獲得教育級別的所有頻率。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/375726.html
下一篇:反應行內條件
