Извлечение информации из файла и создание словаря

#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. Рад, что смог помочь. Для меня было бы полезно проголосовать за / принять ответ!