Не получается преобразовать ключи из словаря в список чтобы повторяющиеся данные не затирались
Всем привет, имеется во такой код:
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 шт):
Это можно сделать так:
Lastwords[message1] = Lastwords.get(message1, []) + [(commits1, author)]
У словарей есть метод get, вызывая который можно указать значение "по умолчанию", которое будет выдаваться в случае, когда ключ не найден в словаре.
Таким образом, можно взять список по значению словаря, либо создать новый список, если такого ключа нет, добавить к полученному списку новый элемент и сохранить обратно в словарь. Тогда список в словаре будет пополняться.
Мне кажется изначально была выбрана неправильная структура для хранения данных. Делать ключи списками, чтобы они не заменялись дубликатами - идея сомнительная.
почему бы не хранить это в виде списка с тюплами или словарями?
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})