Есть список словарей вида:
[{'category': 'software', 'name': 'irssi', 'version': 5},
{'category': 'software', 'name': 'irssi', 'version': 4},
{'category': 'software', 'name': 'hexchat', 'version': 2},
{'category': 'software', 'name': 'hexchat', 'version': 3},
{'category': 'software', 'name': 'hexchat1', 'version': 1}]
Нужно удалить дубли, где с одинаковой категорией и именем, но оставить версию с минимальным числом среди этих дублей.
То есть ответ должен получится вида:
[ {'category': 'software', 'name': 'irssi', 'version': 4},
{'category': 'software', 'name': 'hexchat', 'version': 2},
{'category': 'software', 'name': 'hexchat1', 'version': 1}]
Вот так можно например удалить дубли, но не брать минимальную версию среди дублей
seen = set()
result = []
for dic in lst:
key = (dic['category'], dic['name'])
if key in seen:
continue
result.append(dic)
seen.add(key)
print(result)