Если вы хотите сохранить список в формате он находится в то вы можете просто держать set
из seen
уникальных названий и идти по списку либо удаление записей или добавление к seen
:
def r_enumerate(iterable):
#use itertools.izip and xrange if you are using python 2!
return zip(reversed(range(len(iterable))),
reversed(iterable))
seen = set()
for i, subdata in r_enumerate(data):
if subdata['title'] in seen:
del data[i]
else:
seen.add(subdata['title'])
Это вонн Не изменяйте порядок данных, перемещая их назад, означает, что более поздние (старые) записи сохраняются, и, поскольку вы перемещаетесь по нему назад, вам не нужно беспокоиться об удалении элементов, испортивших остальную итерацию.
С другой стороны, если вы готовы использовать словарь для хранения всех записей вместо списка маленьких словарей это действительно очень просто:
{partdict['title']: partdict['date'] for partdict in LIST_OF_DICTS}
При оценке записей, пришедшие позже в списке будут переопределять предыдущие, поэтому они будут содержать только самые старые записи, не говоря уже о том, что вы можете индексировать записи по их названию вместо своего места в списке.
Чтобы вернуться к формату списка (но содержат только самую старую запись каждого имени) вы можете сделать что-то вроде:
[{'title':title, 'date':date} for title,date in DICT_FORM]
хотя это запутает порядок и быть намного больше работы, если вы захотите оставить его в этом формате в первую очередь.
почему список dicts? Почему не один большой словарь с названием как ключи и даты как значения? то он по сути не мог иметь дубликатов. –
Я раньше не использовал python и должен очищать данные с веб-сайта. Я просто взял один подход со списком диктонов случайно. Поэтому никаких конкретных причин для меня – Sannin