LINUX.ORG.RU

История изменений

Исправление Sahas, (текущая версия) :

Как выше написали, надо взять set(x.keys()+y.keys()), пройти по нему, далее for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) и потом что-то типа res = x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0)

Res = { k : { k2 : x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0) for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) } for k in set(x.keys()+y.keys()) }

Исправление Sahas, :

Как выше написали, надо взять set(x.keys()+y.keys()), пройти по нему, далее for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) и потом что-то типа res = x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0)

Res = { k : {k2 : x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0) for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) } for k in set(x.keys()+y.keys()) }

Исправление Sahas, :

Как выше написали, надо взять set(x.keys()+y.keys()), пройти по нему, далее for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) и потом что-то типа res = x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0)

Res= { k : {k2 : x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0) for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) } for k in set(x.keys()+y.keys()) }

Исправление Sahas, :

Как выше написали, надо взять set(x.keys()+y.keys()), пройти по нему, далее for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) и потом что-то типа res = x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0)

Res= { k : {k2 : x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0) for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) } for k in set(x.keys()+y.keys()) }

Исправление Sahas, :

Писал с телефона и неправильно :)

Как выше написали, надо взять set(x.keys()+y.keys()), пройти по нему, далее for k2 in set(x.get(k, {}).keys() + y.get(k, {}).keys()) и потом что-то типа res = x.get(k, {}).get(k2, 0) + y.get(k, {}).get(k2, 0)

Исправление Sahas, :

Res = {}
for kx in x:
    if kx in y:
        Res[kx] = {}
        for kx2 in x[kx]:
            if kx2 in y[kx]:
                Res[kx][kx2] = x[kx][kx2] + y[kx][kx2]
            else:
                Res[kx][kx2] = x[kx][kx2]
    else:
        Res[kx] = x[kx]

Наверняка можно и элегантнее, тут алгоритм «в лоб» :)

Исходная версия Sahas, :

Res = {}
for kx in x:
    if kx in y:
        Res[kx] = {}
        for kx2 in x[kx]:
            if kx2 in y[kx]:
                Res[kx][kx2] = x[kx][kx2] + y[kx][kx2]
            else:
                Res[kx][kx2] = x[kx][kx2]
    else:
        Res[kx] = x[kx]