python-3.x - 从文件中获取信息并创建字典
问题描述
我的目标是创建一个名为“sum_of_department”的字典,其中包含作为键的部门和作为值的所有员工的总年薪。到目前为止,这就是我所拥有的,但我对如何添加所有部门名称以及该字典中所有员工工资的总和有点迷茫。我尝试的当前字典仅显示工资金额以及在文件中出现的次数。这就是我需要帮助的地方。
import requests
# endpoint
endpoint = "https://data.cityofchicago.org/resource/xzkq-xp2w.json"
# optional parameters
parameters = {"$limit":20,}
# make request
response = requests.get(endpoint, params=parameters)
# Get the response data as a python object.
data = response.json()
count_by_department = {}
sum_by_department = {}
#loop through the data
for i in data:
if ('department' and 'salary_or_hourly' and 'annual_salary' in i):
department = i['department']
pay_type = i['salary_or_hourly']
anual_salary = i['annual_salary']
# print(i['annual_salary'])
else:
# handle case where there is no department property in that record
department = 'undefined'
pay_type = 'n/a'
anual_salary = 'n/a'
# print(department,"," ,pay_type)
# exclude the cases where the pay type is Hourly
if(pay_type != 'Salary' ):
pay_type = 0
# print(department,"," ,pay_type)
# update the sum_by_department and count_by_department dictionaries
if (department in count_by_department):
count_by_department[department] += 1
else:
count_by_department[department] = 1
if (anual_salary in sum_by_department):
sum_by_department[anual_salary] +=1
else:
sum_by_department[anual_salary] = 1
# print(count_by_department)
# print(sum_by_department)
解决方案
您应该在循环时将每个人添加annual_salary
到sum_by_department
数组中。另外,不要忘记将annual_salary
变量转换为float
类型,因为将它们作为字符串添加在一起是行不通的。
示例脚本:
import requests
# endpoint
endpoint = "https://data.cityofchicago.org/resource/xzkq-xp2w.json"
# optional parameters
parameters = {"$limit":20,}
# make request
response = requests.get(endpoint, params=parameters)
# Get the response data as a python object.
data = response.json()
count_by_department = {}
sum_by_department = {}
#loop through the data
for i in data:
if ('department' and 'salary_or_hourly' and 'annual_salary' in i):
department = i['department']
pay_type = i['salary_or_hourly']
annual_salary = float(i['annual_salary'])
# print(i['annual_salary'])
else:
# handle case where there is no department property in that record
department = 'undefined'
pay_type = 'n/a'
annual_salary = 0
# print(department,"," ,pay_type)
# exclude the cases where the pay type is Hourly
if(pay_type != 'Salary' ):
pay_type = 0
# print(department,"," ,pay_type)
# update the sum_by_department and count_by_department dictionaries
if (department in count_by_department):
count_by_department[department] += 1
sum_by_department[department] += annual_salary
else:
count_by_department[department] = 1
sum_by_department[department] = annual_salary
#import pdb; pdb.set_trace();
print('count_by_department = ', count_by_department)
print('sum_by_department = ', sum_by_department)
提示:
取消注释 pdb 行以进行交互式调试。Python 调试器(简称 pdb)在程序仍在运行时(即在内存中)暂停程序,因此您可以与其交互并检查所有变量。
推荐阅读
- python - ansible - 字典列表到列表字典
- python - 如何在 GUI 程序中使用按钮切换控制台
- opencart - Opencart 3.0.3.7 事件未捕获,无法正常工作
- reactjs - 基于响应数据时如何使用 SWR 重新获取
- scheme - 方案框和指针循环列表
- intranet - 内网站点在 chrome/chromium 中浏览网络文件
- javascript - CSS 文件无法在 Nodejs/Express Web 应用程序的第一次请求时加载。从第二个请求开始工作正常
- python - Python - 使用 gremlin 连接到 Neptune
- c# - 使用向上和向下的文本框键在 datagridview 中移动
- javascript - 为什么“var name=42;” 创建一个字符串而不是一个数字?