Python中对(多重)嵌套字典的value进行固定或增长式赋值有什么技巧吗?

RecordData = {
        "D1_AAB_count":{
            'sqlstyle':'int',
            'data':''
        },
        "D2_CCBT":{
            'sqlstyle': 'datatime',
            'data': ''
        },
        "D3_TTR_week":{
            'sqlstyle': 'varchar(10)',
            'data': ''
        },
        "D4_XYZ_seq":{
            'sqlstyle': 'int',
            'data': ''
        }
}

这种嵌套了两层的字典,打算有两个目的:

一、不做干预的默认情况下,data 类型应该是 str,对吧? 把全部 key 为'data'的 value 值赋值为"",空白,而不管这个 key 在第几层。。 'sqlstyle'不变化。。。 除了写 N 层的历遍,有什么技巧?

二、就如上面字典例子,两层,求个伪代码思路即可,赋值""。。。。


Python中对(多重)嵌套字典的value进行固定或增长式赋值有什么技巧吗?

4 回复

没什么技巧,直接遍历:tuple(map(lambda k: RecordData[k].update({‘data’: ‘’}), RecordData))


对于嵌套字典的赋值,用递归或者循环都能搞定。看你要固定赋值还是增长式赋值,我给你两个直接能用的方法:

1. 固定赋值(直接设置值)

def set_nested_value(d, keys, value):
    """
    给嵌套字典的指定路径设置固定值
    d: 目标字典
    keys: 键的列表,如 ['a', 'b', 'c']
    value: 要设置的值
    """
    for key in keys[:-1]:
        d = d.setdefault(key, {})
    d[keys[-1]] = value

# 使用示例
data = {}
set_nested_value(data, ['user', 'profile', 'age'], 25)
print(data)  # {'user': {'profile': {'age': 25}}}

2. 增长式赋值(比如累加)

def increment_nested_value(d, keys, amount=1):
    """
    给嵌套字典的指定路径的值增加指定数值
    如果路径不存在,则创建并初始化为0
    """
    for key in keys[:-1]:
        d = d.setdefault(key, {})
    
    final_key = keys[-1]
    d[final_key] = d.get(final_key, 0) + amount

# 使用示例
stats = {}
increment_nested_value(stats, ['requests', 'api', 'count'], 5)
increment_nested_value(stats, ['requests', 'api', 'count'], 3)
print(stats)  # {'requests': {'api': {'count': 8}}}

简单技巧:

  • setdefault()可以确保路径存在,避免KeyError
  • 递归在处理不确定深度的嵌套时更简洁
  • 增长式赋值记得用get()带默认值,防止第一次访问时报错

一句话建议: 根据需求选方法,固定赋值用直接设置,增长式用get()加默认值。

json to xml,然后 xpath,getall 到节点‘ data ’ 修改后再 xml to json.

,谢~~

,啊,哥,您这个好曲线啊~,笑~^_^

回到顶部