Python Вопрос для новичков: удалить повторяющиеся приложения из словаря - ошибка: индекс списка вне допустимого диапазона - PullRequest
0 голосов
/ 09 июля 2020

Я хочу удалить повторяющиеся записи из своего словаря и поместить их - если они уникальны - в другой «уже добавленный» список. Но произошла эта ошибка. Кто-нибудь может мне помочь? Спасибо, Николас

android_clean = [] 
already_added = []
for app in android:
    name = app[0]
    n_reviews = float(app[3])
    
    if (reviews_max[name] == n_reviews) and (name not in already_added):
        android_clean.append(app)
        already_added.append(name)

explore_data(android_clean,0,3,True)

Описание ошибки:

Number of rows: 0

IndexErrorTraceback (most recent call last)
<ipython-input-21-8a2f24b7862c> in <module>()
----> 1 explore_data(android_clean,0,3,True)

<ipython-input-11-403f879c8933> in explore_data(dataset, start, end, rows_and_columns)
      7     if rows_and_columns:
      8         print('Number of rows:', len(dataset))
----> 9         print('Number of columns:', len(dataset[0]))
     10 
     11 print(android_header)

IndexError: list index out of range

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

@ MenyIssakov: с "android", определенным в строке кода выше:

android_clean = [] 
already_added = []

for app in android:
    name = app[0]
    n_reviews = float(app[3])
    
    if (reviews_max[name] == n_reviews) and (name not in already_added):
        android_clean.append(app)
        already_added.append(name)
        
explore_data(android_clean,0,3,True)
0 голосов
/ 09 июля 2020

У вас есть скрытое предположение, что dataset должны содержать данные.
Если набор данных пуст, то набор данных [0] выдает ошибку IndexError, когда вы пытаетесь получить элемент из пустого списка

когда вы вызываете функцию explore_data, ваш rows_and_columns передается как True (последний атрибут), explore_data(android_clean,0,3,True), таким образом, ваш if на самом деле if True Вероятно, это должно быть так:

if dataset:
    print('Number of rows:', len(dataset))
    print('Number of columns:', len(dataset[0]))

Я бы также использовал kwargs, чтобы вы могли лучше видеть, что вы отправляете своим функциям

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