user13074756:
Eu tenho uma lista aninhada chamada multi:
[[14, 77766 ,[2, 2]],
[15, 77766, [1, 2]],
[70, 88866, [1, 5]],
[71, 88866,[2, 5]],
[72, 88866, [5, 5]],
[73, 88866, [4, 5]],
[74, 88866, [3, 5]],
[79, 99966, [1, 2]],
[80, 99966, [2, 2]]]
Eu preciso da minha saída a ser:
{77766: {14:2 ,15:1} , 88866: {70:1, 71:2, 72:5, 73:4, 74:3}, 99966: {79:1, 80:2}}
Tenho escrito códigos que produziram o abaixo de dois dicionários. Como faço para combiná-las para alcançar a saída que eu quero?
a = {77766: [14, 15], 88866: [70, 71, 72, 73, 74], 99966: [79, 80]}
b = {14: 2, 15: 1, 70: 1, 71: 2, 72: 5, 73: 4, 74: 3, 79: 1, 80: 2}
Ch3steR:
Você pode usar defaultdict
aqui. multi
não precisa ser resolvido.
from collections import defaultdict
out=defaultdict(dict)
for v,k,vs in multi:
out[k]={**out[k],**{v:vs[0]}}
Resultado
defaultdict(dict,
{77766: {14: 2, 15: 1},
88866: {70: 1, 71: 2, 72: 5, 73: 4, 74: 3},
99966: {79: 1, 80: 2}})
EDIT :
Triagem dos dicionários interiores.
out={k:dict(sorted(v.items(),key=lambda x:x[1])) for k,v in out.items()}
Resultado:
{77766: {15: 1, 14: 2},
88866: {70: 1, 71: 2, 74: 3, 73: 4, 72: 5},
99966: {79: 1, 80: 2}}