def keep_last_occurrences(lst, key): seen = set() for idx in reversed(range(len(lst))): item = lst[idx] k = key(item) if k in seen: del lst[idx] else: seen.add(k) return lst def delete_duplicate_styles(list_styles_to_update, different_styles): for s in list_styles_to_update: for d in different_styles: if s["doc"].name == d["doc"].name and s["list_style"].split(" : ")[0] == d["style"].name: different_styles.remove(d) return different_styles