#python-3.x
#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:
Вы должны добавить каждого пользователя 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) останавливает программу, пока она еще запущена (т. Е. в памяти), чтобы вы могли взаимодействовать с ней и проверять все переменные.
Комментарии:
1. Спасибо. У меня все еще есть вопрос. У вас есть день, чтобы получить зарплату каждого сотрудника и добавить их. Что является частью цели. Но как бы я добавил эту зарплату к общей зарплате отдела. На основе того, где работает этот человек?
2. Не обращайте внимания, я только что запустил код и понял, что происходит. Спасибо
3. Рад, что смог помочь. Для меня было бы полезно проголосовать за / принять ответ!