KeyError: 12 при использовании собственного Python - PullRequest
0 голосов
/ 02 апреля 2019

Попытка создать структуру данных, которая использует отдел в качестве «ключа», а общее количество запросов для этого отдела - в качестве «значения», но я выдаю ключевую ошибку 12 (консоль явно говорит, что что-тонеправильно с

total_department_requests = total_for_department[products[entry]["department_id"]] + products[entry]["metrics"]["request_count"]
total_for_department = {}
for entry in products:   

   #print entry
   if entry not in total_for_department:
      #print "it's new"
      total_for_department.update({products[entry]["department_id"] : products[entry]["metrics"]["request_count"]} )
   else:
      total_department_requests = total_for_department[products[entry]["department_id"]] + products[entry]["metrics"]["request_count"] 
      # print total_department_requests
      total_for_department.update({products[entry]["department_id"] : total_department_requests })

print(total_for_department)

Любая помощь будет высоко ценится

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Во-первых, я бы посоветовал вам переформатировать ваши данные. Если вы не можете найти ключевую ошибку, это означает, что вы делаете ее слишком сложной.

В любом случае, KeyError "12" заставляет меня думать, что вы пытаетесь обновить запись для определенного идентификатора отдела, который еще не существует.

На самом деле, вы не проверяете, существует ли ["department_id"] перед обновлением products[entry]["department_id"]

На самом деле, теперь, когда я смотрю на него, кажется, вы проверяете, не существует ли он, а если нет, вы обновляете его, а не создаете его. Попробуйте переключить два действия.

Может быть, попробуйте

if products[entry]["department_id"] in total_for_department
1 голос
/ 02 апреля 2019

entry - это не индекс, это фактическая вещь в массиве products.products[entry] не имеет смысла, когда вы делаете for entry in products

Если вы хотите индекс, используйте enumerate.

for i, entry in enumerate(products):
...