Я не уверен, чего ты хочешь достичь. Повторяющаяся тема в вашем коде:
if some_dict.get(key):
some_dict[key] = {}
Это означает: если some_dict
имеет ключ key
и some_dict[key]
является истинным значением, то замените some_dict[key]
на {}
. Если some_dict
не имеет ключа key
или some_dict[key]
является ложным значением (None
, 0
, False
, []
и т. Д.), То ничего не делать.
Если это то, что вы хотели, вы можете уточнить это так:
def replace_value_by_empty_dict(d, key):
if d.get(key):
d[key] = {}
...
replace_value_by_empty_dict(self.data, 'stage')
etc.
Но если это не то, что вы намеревались (код сломается, если один из if
s верен), вы можете сформулировать проблему английскими словами или псевдокодом, чтобы прояснить структуру проблемы.
И взгляните на collection.defaultdict .