Поиск по списку словаря не дает достоверного результата? - PullRequest
0 голосов
/ 08 июля 2019

По сути, у меня есть список словарей, обычно каждый словарь имеет менее 20 пар ключ: значение, и в списке около 70 000 словарей. Размер списка составляет около 360M байт. По сути, я хочу найти словари, содержащие определенное ключевое слово, создать новый список и удалить их из старого списка. Вот мой код:

new_list = []

for item in old_list:
    if 'keyword' in item:
        new_list.append(item)
        old_list.remove(item)

Что случилось, так это то, что после первого запуска я все еще могу найти словари, которые содержат «ключевое слово» в старом списке. Я запускаю один и тот же код 2-й и 3-й раз, каждый раз, когда размер new_list увеличивается, а old_list уменьшается.

Кажется, это очень простая проблема, но я не могу понять, почему это происходит. Я сделал что-то не так?

Ответы [ 2 ]

1 голос
/ 08 июля 2019
new_list = [item for item in old_list if 'keyword' in item]
old_list  = [item for item in old_list if 'keyword' not in item]
0 голосов
/ 08 июля 2019

см. Ниже

lst = [{'k1':12},{'k3':77},{'k1':77}]
new_list = []
to_delete = []
for idx,entry in enumerate(lst):
  if 'k1' in entry:
    new_list.append(entry)
    to_delete.append(idx)
to_delete = sorted(to_delete,reverse=True)
for idx in to_delete:
  lst.pop(idx)
print(lst)
print(new_list)

выход

[{'k3': 77}]
[{'k1': 12}, {'k1': 77}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...