Просмотр того, что нового в списке json в Python

#python #json

#python #json

Вопрос:

Я вызываю список объектов через json в Python, и я хочу что-то сделать с каждым из них.

Как я могу убедиться, что при запуске этого скрипта во второй раз я не использую объекты, которые я уже использовал в первый раз?

Пример:

При первом запуске скрипта я получаю это:

 {u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73293}}
  

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

Затем я запускаю его снова, и я получаю это: (первый все еще там, но добавлен другой.)

 {u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73293}}
{u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73299}}
  

Теперь я хочу записать только 2-й в текстовый файл. О, и я хочу, чтобы он был как можно более легким.

Комментарии:

1. Определите «новое». Было бы здорово, если бы вы сделали это с помощью примера кода.

2. Вы пытаетесь проверить наличие точного дубликата?

3. @Alex, или, по крайней мере, псевдокод.

4. Я думаю, что вам нужно сохранить список уже обработанных объектов (или просто что-то, что их идентифицирует) где-нибудь (файл, база данных, …) и проверить, использовали ли вы их уже во время выполнения.

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

Ответ №1:

 old_list = json.loads(old_json)
new_list = json.loads(new_json)

new_items_list = list(set(new_list) - set(old_list))
  

Комментарии:

1. Я думаю, что понимаю, но … как мне сохранить old_json?

2. Вы можете изменить это решение для обновления old_list после обработки каждого нового набора — это полностью решит исходную проблему.

3. @JCB_K Если вы работаете в том же процессе, просто сохраните его в переменной. Если вам нужна настойчивость — например, каждая задача обрабатывается отдельно, и они не разделяют состояние, тогда просто запишите old_json в файл. Помните о проблемах параллелизма, если в этот файл могут записываться более одного процесса.