Соединить значения словарей

Есть список словарей:

[{'name': 'Jules Verne', 'date': '24/03/1905'}
{'name': 'Jules Verne', 'date': '8/02/1828'}
{'name': 'Leo Tolstoy', 'date': '20/11/1910'}
{'name': 'Leo Tolstoy', 'date': '9/09/1828'}
{'name': 'Lewis Carroll', 'date': '14/01/1898'}
{'name': 'Lewis Carroll', 'date': '27/01/1832'}
{'name': 'Mark Twain', 'date': '30/11/1835'}]

Необходимо на выходе получить список словарей, где повторяющиеся имена соединятся, а их значения будут под другими ключами, например:

[{'name': 'Jules Verne', 'birth_date': '8/02/1828', 'death_date': '24/03/1905'}, ...]

Это должна быть функция. И без использования сложных инструментов.


Ответы (2 шт):

Автор решения: Danis
def f(lst):
    res = [{"name": lst[0]["name"], "date": []}]
    lst.sort(key = lambda x: int(x["date"][-4:]) 
    for dict_ in lst:
        for i in range(len(res)):
            if res[i]["name"] == dict_["name"]:
                res[i]["date"].append(dict_["date"])
                break
        else:
            res.append({"name": dict_["name"], "date": [dict_["date"]]})
    
    lst = []
    for dict_ in res:
        lst.append({})
        lst[-1]["name"] = dict_["name"]
        lst[-1]["birth_date"] = dict_["date"][0]
        if len(dict_["date"]) > 1:
            lst[-1]["deat_date"] = dict_["date"][1] 
    return lst
→ Ссылка
Автор решения: user363756

В Python3.9 добавили операцию объединения словарей

dict1 |= dict2
→ Ссылка