Не получается преобразовать ключи из словаря в список чтобы повторяющиеся данные не затирались

Всем привет, имеется во такой код:

Lastwords = {}     
repo = git.Repo(MY_PATH)
commits = list(repo.iter_commits("master", max_count=499))
    

for i in range(0,499):
    commits1 = commits[i]
    author = commits[i].author
    message = commits[i].message
    message1 = commits[i].message.join(re.findall(r'[A-Z]{2,3}-[0-9]{3,4}',message))

    Lastwords[message1] = commits1, author

В поле message1 входит информация о jiratickets которые могут повторятся В голову пришла мысль сделать ключи списком, но как бы я не пытался:

list(Lastwords.keys())

Lastwords[list(message1)] = commits1, author

У меня это плохо получается, я в питоне всего неделю прошу судить строго и конструктивно Всем продуктивных рабочих дней!


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

Автор решения: CrazyElf

Это можно сделать так:

Lastwords[message1] = Lastwords.get(message1, []) + [(commits1, author)]

У словарей есть метод get, вызывая который можно указать значение "по умолчанию", которое будет выдаваться в случае, когда ключ не найден в словаре.

Таким образом, можно взять список по значению словаря, либо создать новый список, если такого ключа нет, добавить к полученному списку новый элемент и сохранить обратно в словарь. Тогда список в словаре будет пополняться.

→ Ссылка
Автор решения: Stepanov Dmitry

Мне кажется изначально была выбрана неправильная структура для хранения данных. Делать ключи списками, чтобы они не заменялись дубликатами - идея сомнительная.

почему бы не хранить это в виде списка с тюплами или словарями?

Lastwords = []
LastwordsWithDict = []     
repo = git.Repo(MY_PATH)
commits = list(repo.iter_commits("master", max_count=499))
    

for i in range(0,499):
    commits1 = commits[i]
    author = commits[i].author
    message = commits[i].message
    message1 = commits[i].message.join(re.findall(r'[A-Z]{2,3}-[0-9]{3,4}',message))

    Lastwords.append((message1, commits1, author))
    LastwordsWithDict.append({"message": message1, "commits": commits1, "author": author})
→ Ссылка