如何创建具有不同嵌套级别且所有叶键具有相同值的嵌套 python 字典

How to create nested python dictionary that has varying levels of nesting and all leaf keys has the same value

我正在重构意大利面条代码,它有这样一段:

template_dict = {
    "value": "",
    "isIncreased": False,
    "isDecreased": False
}
my_dict = {
    "current_half_result": {
        "home": template_dict,
        "draw": template_dict,
        "away": template_dict
    },
    "full_time_result": {
        "home": template_dict,
        "draw": template_dict,
        "away": template_dict
    },
    "current_half_over_under": {
        "_5": {
            "over": template_dict,
            "under": template_dict
        },
        "handicap": ""
    },
    "full_time_over_under": {
        "_5": {
            "over": template_dict,
            "under": template_dict
        },
        "handicap": ""
    },
    "next_goal": {
        "home": template_dict,
        "no_goal": template_dict,
        "away": template_dict
    }
}

如您所见,my_dict 变量在所有叶键中具有相同的值 - template_dict。我怎样才能以一种代码不会比当前示例慢的方式从代码中删除重复,并且还可以提高代码的可读性和清洁度。速度是一个重要因素,因为这段代码在我的服务器中每秒运行 3-6 百次。而且我不会增加行数或创建额外的功能等。

P.S。我没有写那个代码,所以不要评判我。由于代码中的强耦合,我无法立即进行大的更改。有关完整代码,请查看 this link

这是我自己的解决方案。

def_dict = defaultdict(lambda: {"value": "", "isIncreased": False, "isDecreased": False})
my_dict = defaultdict(lambda: def_dict)
# PyCharm raises warning for two lines below, but it works
my_dict['current_half_over_under'] = defaultdict(lambda: def_dict) 
my_dict['full_time_over_under'] = defaultdict(lambda: def_dict)

并且要在 "full_time_over_under""current_half_over_under" 词典中设置 "handicap" 键,我们应该通过 my_dict.setdefault('handicap', some_value)

访问它