Criar um dicionário aninhados com dois dicionários

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 defaultdictaqui. multinã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}}

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=320782&siteId=1
Recomendado
Clasificación