Создать словарь внутри вложенных списков - PullRequest
0 голосов
/ 16 февраля 2020

Может кто-нибудь объяснить, как я могу создать словарь внутри списков? Например, у меня есть этот словарь:

A = {'typeA': [12], 'typeB': [12, 13]} 

, и я хочу получить это:

A = {'typeA': [{12: []}], 'typeB': [{12: []}, {13: []}]}

Я пробовал что-то вроде этого:

listFinal = []
for key in A.keys
---- newDict = {}
---- for value in A[key]:
--------- newDict[value] = []
newDict[key].append(value)

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

Ответы [ 3 ]

0 голосов
/ 16 февраля 2020

Я надеюсь, что это будет соответствовать вашим требованиям

A = {'typeA': [12], 'typeB': [12, 13]}
result = {}
for item in A.items():
    result[item[0]] = [dict.fromkeys(item[1], [])]
print(result)
# {'typeA': [{12: []}], 'typeB': [{12: [], 13: []}]}
0 голосов
/ 16 февраля 2020

Если вы просто хотите «преобразовать» каждый элемент в каждом значении в одноэлементный диктант с пустым списком, вы можете сделать:

A = {'typeA': [12], 'typeB': [12, 13]}

for lst in A.values():
    for i, val in enumerate(lst):
        lst[i] = {val: []}

print(A)

Дает:

{'typeA': [{12: []}], 'typeB': [{12: []}, {13: []}]}

Исходя из своей первоначальной мысли, вы, вероятно, имели в виду нечто похожее на:

for key in A.keys():
    listFinal = []
    for value in A[key]:
        newDict = {value: []}
        listFinal.append(newDict)
    A[key] = listFinal

Что дает тот же результат

0 голосов
/ 16 февраля 2020

Вы можете сделать это с помощью диктовок

a = {key: [{v: []} for v in A[key]] for key in A.keys()}

# outout {'typeA': [{12: []}], 'typeB': [{12: []}, {13: []}]}

Другая версия

a = {key: [{v: []} for v in value] for key, value in A.items()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...