Ублюдочные словари | Ветви к древовидной структуре - PullRequest
1 голос
/ 31 января 2020

Я после небольшого совета, пожалуйста.

Я пытаюсь объединить несколько словарей как объекты - ветви - в один словарь как объект - дерево. Например:

d1 = {'alpha':{'one':{'a':1}}}
d2 = {'alpha':{'one':{'b':2}}}
d3 = {'alpha':{'two':{'a':3}}}
d4 = {'alpha':{'two':{'b':{'rock':4}}}}
d5 = {'bravo':{'one':{'a':{'paper':5}}}}

Должно стать:

d_tot = {
    'alpha':{
        'one':{
            'a':1,
            'b':2,
            },
        'two':{
            'a':3,
            'b':{
                'rock':4
            }
        }
        },
    'bravo':{
        'one':{
            'a':{
                'paper':5
            }
        }
    }
}

Будут объединены сотни веток различной длины в дерево.

Как упоминалось ранее, эти являются словарными объектами или убитыми словарями, которые выглядят следующим образом:

class bastardised_dict(dict):
    def __init__(self, *args):
        super(dict, self).__init__(*args)
        self.__dict__ = self

Важно, чтобы они оставались убогими словарями и чтобы конечный результат также был ублюдком. Это позволяет получить доступ как: d_tot.alpha.one.a

Скажите, пожалуйста, пропустил ли я что-нибудь существенное. Извиняюсь, если я нарушаю способ использования словарей / классов - я слишком далеко вниз по кроличьей норе, чтобы повернуть назад.

Заранее спасибо за то, что подумали (даже если у вас нет решения, я ценю ваше время).

...