首页 > 解决方案 > 从文件中获取信息并创建字典

问题描述

我的目标是创建一个名为“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)

标签: python-3.x

解决方案


您应该在循环时将每个人添加annual_salarysum_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)在程序仍在运行时(即在内存中)暂停程序,因此您可以与其交互并检查所有变量。


推荐阅读