从文件中获取信息并创建字典

时间:2019-03-20 18:15:26

标签: 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)

1 个答案:

答案 0 :(得分:1)

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