Python рекурсивно заменяет символы в ключах вложенного словаря?

Я пытаюсь создать общую функцию, которая заменяет точки в ключах вложенного словаря. У меня есть не -универсальная функция, которая имеет 3 уровня в глубину, но должен быть способ сделать это универсальным. Любая помощь приветствуется! Мой код на данный момент:

output = {'key1': {'key2': 'value2', 'key3': {'key4 with a.': 'value4', 'key5 with a.': 'value5'}}} 

def print_dict(d):
    new = {}
    for key,value in d.items():
        new[key.replace(".", "-")] = {}
        if isinstance(value, dict):
            for key2, value2 in value.items():
                new[key][key2] = {}
                if isinstance(value2, dict):
                    for key3, value3 in value2.items():
                        new[key][key2][key3.replace(".", "-")] = value3
                else:
                    new[key][key2.replace(".", "-")] = value2
        else:
            new[key] = value
    return new

print print_dict(output)

ОБНОВЛЕНИЕ :, чтобы ответить на мой собственный вопрос, я сделал решение, используя хуки json object _:

import json

def remove_dots(obj):
    for key in obj.keys():
        new_key = key.replace(".","-")
        if new_key != key:
            obj[new_key] = obj[key]
            del obj[key]
    return obj

output = {'key1': {'key2': 'value2', 'key3': {'key4 with a.': 'value4', 'key5 with a.': 'value5'}}}
new_json = json.loads(json.dumps(output), object_hook=remove_dots) 

print new_json
25
задан Bas Tichelaar 28 July 2012 в 11:59
поделиться