Пройдите список диктов и удалите те без ключа X - PullRequest
0 голосов
/ 17 января 2019

У меня есть список ответов JSON, которые я хочу проанализировать перед тем, как поместить их в DataFrame.

В моем списке из 15 000 ответов я хочу удалить те, в которых нет определенного ключа.

Кажется, что то, что у меня есть, покажется забавным делом с циклом после удаления элемента, и я не уверен, почему.

Если я запускаю ниже - он правильно находит 3 совпадения из 15k, которые должны быть удалены.

Deleted! : 2591
Deleted! : 12306
Deleted! : 12307

-

try:
    for i in range(len(trans)):
        #print("checking for deletion: "+ str(i))
        if 'CashBooks' not in trans[i]:
            #del trans[i]
            print("Deleted! : " + str(i))
except Exception as e:
    print(str(e))
    print('passed')
    pass

Однако, когда я комментирую del, я получаю сообщения об ошибках вроде этого:

Deleted! : 2591
Deleted! : 12305
list index out of range
passed

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

Спасибо за ваше время.

1 Ответ

0 голосов
/ 17 января 2019

Вы можете использовать фильтр , это будет быстрее, и вы не будете редактировать данные во время цикла

def check_not_in(value):
    return 'Cashbooks' not in value

data = filter(check_not_in, trans)

#this is only to show what ones were deleted
def check_in(value):
    return 'Cashbooks' in value

deleted = filter(check_in, trans)
for _ in deleted: print("Deleted: {}".format(_))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...