словарь из списка Python

Есть списки к примеру:

list_1 = [['1', '2', '3'],['1', '2'],['1']]

Хочу получить вот такой список со словарями

l = [[{'key':'1'}, {'key':'2'}, {'key':'3'}],[{'key':'1'}, {'key':'2'}],[{'key':'1'}]]

Подскажите, как мне его получить?


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

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

Вероятно, вот решение:

listA = [['1', '2', '3', '4']]
listB = []

for items in listA: # проходим по всем значениям listA
  tmp = [] # временный массив
  for item in items: # проходим по всем значениям items
    tmp.append({"key":item}) # добавляем dict в временный массив
  listB.append(tmp) # добавляем временный масив в listB

print(listB) # выводим на экран результат
→ Ссылка
Автор решения: GrAnd

Можно рекурсией пройтись по вложенным спискам и каждый элемент заменить на словарь.

list_1 = [['1', '2', '3'],['1', '2'],['1']]

def process(lst):
    return [process(el) if isinstance(el, list) else {'key': el} for el in lst]
    
list_2 = process(list_1)
print(list_2)

Или если входной список всегда только двойной вложенности, то можно банально в одну строчку:

list_2 = [[{'key': el} for el in lst] for lst in list_1]

Выдаст:

[[{'key': '1'}, {'key': '2'}, {'key': '3'}], [{'key': '1'}, {'key': '2'}], [{'key': '1'}]]
→ Ссылка
Автор решения: Сhurina Margaery

Вот решение со вложенным списком:

list_1 = [['1', '2', '3'], ['1', '2'], ['1']]
list_2 = []

for elem in list_1:
    elem_1 = [{"key": i} for i in elem]
    list_2.append(elem_1)

print(list_2)
→ Ссылка