У меня есть словарь:
dicts = [
{'id': 'item1', 'type': 'foo', 'metaId': 'metaId1'},
{'id': 'item2', 'type': 'foo', 'metaId': 'metaId2'},
{'id': 'item3', 'type': 'foo3', 'metaId': 'metaId3'},
{'id': 'item4', 'type': 'foo2', 'metaId': 'metaId2'},
{'id': 'item5', 'type': 'foo3', 'metaId': 'metaId3'},
{'id': 'item6', 'type': 'foo2', 'metaId': 'metaId2'},
{'id': 'item7', 'type': 'foo3', 'metaId': 'metaId3'},
{'id': 'item8', 'type': 'foo2', 'metaId': 'metaId2'},
{'id': 'item9', 'type': 'foo3', 'metaId': 'metaId3'}]
Я хочу l oop просмотреть список и создать новый список, содержащий словари с уникальными значениями для ключа 'type'. Мне все равно, какие словари останутся, первый экземпляр с этим ключом: значение остается, все остальное опущено. Итак, в конце я хотел бы увидеть:
expected = [
{'id': 'item1', 'type': 'foo', 'metaId': 'metaId1'},
{'id': 'item3', 'type': 'foo3', 'metaId': 'metaId3'},
{'id': 'item4', 'type': 'foo2', 'metaId': 'metaId2'}
]
Вот то, что я пробовал, определенно не то, что мне нужно, поскольку он возвращает пустой список. Я думаю, что мне трудно проверить значение в новом подсписке словарей, чтобы исключить его
keys_to_keep = set()
expected = []
for d in dicts:
for key, value in d.items():
if value not in expected:
keys_to_keep.add(key)
remove_keys = set(d) - keys_to_keep
for d in dicts:
for k in remove_keys:
del d[k]
dicts = expected
print(dicts)