Я хочу создать вложенный словарь из списка, который должен быть ключами и словарями, являющимися значениями этого вложенного словаря.
Вход:
l = [key1, key2, key3]
d1 = {string11:value11, string12:value12, string13:value13}
d2 = {string21:value21, string22:value22, string23:value23}
d3 = {string31:value31, string32:value32, string33:value33}
Выход:
{key1 : {string11:value11, string12:value12, string13:value13}, key2 : {string21:value21, string22:value22, string23:value23}, key3 : {string31:value31, string32:value32, string33:value33}}
До сих пор я пытался сжать список и словарь, но это создает еще один словарь, а не вложенный словарь.
ld = dict(zip(l,d))
Нужно ли сначала создать список d1, d2, d3? Как я могу объединить l
и список диктовок тогда?
Почему у вас так много переменных с одинаковой структурой dict? Почему бы просто не создать их как вложенный дикт?
Да, вам нужно сначала создать список d
dict(zip(l, [d1, d2, d3]))
Когда вы передаете словарь в качестве итератора, его значения будут повторяться (ключи не будут включены). Следовательно, почему dict(zip(l, d1))
создаст один словарь, а не вложенный.
Есть много способов. Например, вы можете использовать понимание dict:
ld = {k: d for k, d in zip(l, [d1, d2, d3])}
ld = dict(zip(l,[d1, d2, d3]))