You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写函数向嵌套dict中添加新dict并自动生成递增整数key

方案1:基于字典长度实现(无删除操作时最优)

原理是当前父字典的长度刚好等于下一个要分配的递增key(初始为空时长度为0,添加第一个元素分配key=0后长度变为1,下一个新增key自动为1,以此类推)。

def add_child(parent: dict, child: dict) -> int:
    # 自动计算递增key
    new_key = len(parent)
    parent[new_key] = child
    return new_key

使用示例:

# 初始化空父字典
parent_dict = {}

# 依次添加子字典
add_child(parent_dict, {'name': 'pork', 'cals': 100, 'pro': 10, 'sugar': 1})
add_child(parent_dict, {'name': 'chicken', 'cals': 190, 'pro': 19, 'sugar': 19})
add_child(parent_dict, {'name': 'beef', 'cals': 160, 'pro': 12, 'sugar': 2})

print(parent_dict)

输出结果与你给出的结构完全一致。
注意:如果业务中有删除父字典元素的需求,该方案会出现key覆盖问题,比如删除key=1的元素后,父字典长度变为2,再新增元素会分配key=2,覆盖原有key=2的内容,这种场景推荐使用方案2。

方案2:封装独立计数器(支持删除操作)

把父字典和递增计数器封装为类,计数器独立维护,不受删除操作影响:

class AutoIncDict:
    def __init__(self):
        self._data = {}
        self._counter = 0
    
    def add(self, child: dict) -> int:
        new_key = self._counter
        self._data[new_key] = child
        self._counter += 1
        return new_key
    
    def get_dict(self) -> dict:
        return self._data

使用示例:

auto_dict = AutoIncDict()
auto_dict.add({'name': 'pork', 'cals': 100, 'pro': 10, 'sugar': 1})
auto_dict.add({'name': 'chicken', 'cals': 190, 'pro': 19, 'sugar': 19})
# 执行删除操作不影响计数器递增
del auto_dict.get_dict()[1]
auto_dict.add({'name': 'beef', 'cals': 160, 'pro': 12, 'sugar': 2})

print(auto_dict.get_dict())
# 输出:{0: {'name': 'pork', ...}, 2: {'name': 'beef', ...}},不会出现覆盖问题

内容的提问来源于stack exchange,提问作者Erovring

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:42:00