Почему у меня появляется KeyError: «Книжка-раскраска моана». Это что, пасхальное яйцо? - PullRequest
1 голос
/ 09 мая 2020

Я хотел пройтись по списку android приложений в Google Play. У меня есть список с повторяющимися приложениями, называемый duplicate_apps, и список списков, содержащий все приложения, их имя, количество отзывов и т. Д. c. (называется google_data), и я хочу создать словарь с повторяющимися приложениями и наибольшим количеством обзоров:

reviews_max = {}

for app in google_data:
    name = app[0]
    n_reviews = app[3]
    if name in duplicate_apps:
        if reviews_max[name] < n_reviews:
            reviews_max[name] = n_reviews

print(reviews_max)

Если я запускаю этот скрипт, он вызывает ключевую ошибку, относящуюся к «Книжка-раскраска Моана» . Я погуглил, и это нигде не имеет отношения к python, просто книжка-раскраска какого-то персонажа Диснея:

KeyErrorTraceback (most recent call last)
<ipython-input-13-216038b69f10> in <module>()
      5     n_reviews = app[3]
      6     if name in duplicate_apps:
----> 7         if reviews_max[name] < n_reviews:
      8             reviews_max[name] = n_reviews
      9 

KeyError: 'Coloring book moana'

О чем эта ошибка раскраски? Мне кажется, что кто-то меня балует?

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Вы пытаетесь получить доступ к элементу словаря до того, как фактически поместите туда значение. Поскольку вы хотите иметь значение по умолчанию 0 для каждой записи, рассмотрите возможность использования класса defaultdict.

from collections import defaultdict

reviews_max = defaultdict(int) # 0 by default
1 голос
/ 09 мая 2020

KeyError включает ключ, который вы пытались использовать, в данном случае это значение name, полученное из вашего google_data.

Возможно, вы выполнили поиск Android приложений, и в результаты попало это приложение, у которого нет отзывов?

https://apkpure.com/coloring-book-moana/com.kidscoloringbook.android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...