Помогите отследить словарь в Пайтоне
я учу пайтон и для опыта делаю свой небольшой проект. Суть проекта заключается запарсить json файл по ссылке и получить словарь, данный словарь каждый раз обновляется. И я хочу сохранять его в списке по типу [Словарь 1] -> [Словарь 2, Словарь 1] -> [Словарь 3, Словарь 2, Словарь 1] и так далее
from main import get_last_data
import time
data_list = []
while True:
get_last_data()
data_list.append((get_last_data()))
print(list((data_list)))
time.sleep(1)
У меня выводит:
[{'92207140241': 2}]
[{'92207140241': 2}, {'92207140241': 2}]
[{'92207140241': 2}, {'92207140241': 2}, {'92207140241': 2}]
А должен:
[{'92207140241': 2}]
[{'92207140242': 4}, {'92207140241': 2}]
[{'92207140243': 1}, {'92207140242': 4}, {'92207140241': 2}]
Чуток переписал код:
from main import get_last_data
import time
data_list = ['start']
while True:
get_last_data()
if get_last_data() != data_list[0]:
data_list.insert(0, get_last_data())
else:
continue
print(data_list)
time.sleep(5)
Главная проблема в том что в цикле когда вызывает функцию переменная не меняется, и из за этого выводит один и те же данные
Ответы (2 шт):
Автор решения: n1tr0xs
→ Ссылка
Вы добавляете в конец списка, а вам нужно в начало.
from main import get_last_data
import time
data_list = []
while True:
# get_last_data() # зачем вы вызываете эту функцию без сохранения результата ее работы в переменную ?
new_data = get_last_data()
if new_data not in data_list:
data_list = [new_data] + data_list # 1 вариант
data_list.insert(0, new_data) # 2 вариант
print(data_list) # list() не нужен, потому что data_list и без того список
time.sleep(1)
Автор решения: on paper
→ Ссылка
Разобрался наконец:
data_list = []
last_number = int(*get_last_data().keys())
while True:
if last_number == int(*get_last_data().keys()):
data_list.insert(0, get_last_data())
last_number = int(*get_last_data().keys()) + 1
else:
continue
print(data_list)
Результат:
[{'92207150093': 4}]
[{'92207150094': 2}, {'92207150093': 4}]