Конечная цель состоит в том, чтобы создать словарь, в котором дублированные имена объединяются в один ключ, а его значение-несколько элементов

#python #string #loops #dictionary

Вопрос:

У меня есть список, который прошел цикл for, чтобы создать каждый элемент отдельно в виде строки. Затем я создал переменную для разделения этих строк, чтобы получить пары ключ=(в результате чего появилось несколько списков). В основном в этих списках есть только два элемента: [0], которые будут использоваться в качестве ключей, и [1], которые будут использоваться в качестве значений. Как преобразовать эти списки в словари, в которых дублированные ключи объединены, а их [1]являются их значением? Я новичок в этом, поэтому, пожалуйста, никаких причудливых кодов, таких как def. Подумайте о главном.

 lst = ["help-please" , "desperate-fix", "help-today", "desperate-need"]
for i in lst:
    a = i
    b = a.split("-")
    c = b[0]  #keys
    d = b[1]  #values
    e = {c:d} #how do I fix this to one key to many values? I believe this should be a loop to 
             facilitate many key:value pairs
 

Моя конечная цель:

 e = {"help": ["please", "today"], "desperate": ["fix", "need"]
 

Ответ №1:

 lst = ["help-please" , "desperate-fix", "help-today", "desperate-need"]
ret_dict = {}
for i in lst:
    a = i
    b = a.split("-")
    c = b[0]  #keys
    d = b[1]  #values
    if c in ret_dict.keys():
        ret_dict[c].append(d)  # If key already exists then append to list
    else:
        ret_dict[c] = [d]      # else make new list and add d as the first element

print(ret_dict)