Skip to content

字典添加二级键值的问题

发布于2020-12-19 17:19
保质期2023-12
新鲜度
0%

问题来源

分类统计n个带两级分类的数值。

解决过程

最简单的办法是直接 result["一级分类"]["二级分类"] += amount

但是这样会报 KeyError 错误,原因是Python只能自动新建一级不存在的键,比如直接 result["一级分类"] += amount 是可以的,即使一级分类在累加前不存在。

因此需要确保两级分类先存在,可是这样显然需要 if "一级分类" not in resultif "二级分类" not in result["一级分类"] 并依次进行处理,麻烦了一些。

后来经过测试发现,Python是自动新建最末尾一级不存在的键,于是代码可以 if "一级分类" not in result 确保第一级存在后直接 result["一级分类"]["二级分类"] += amount

对于有限层的字典,可以像这样确保更新时所有层级都存在。虽然有些冗长,但这是最省事的实现。

python
dataset = dict()

def update(first: str, second: str, third: str, fourth: str, /, value=None):
    if first not in dataset:
        dataset[first] = dict()
    if second not in dataset[first]:
        dataset[first][second] = dict()
    if third not in dataset[first][second]:
        dataset[first][second][third] = dict()
    dataset[first][second][third][fourth] = value