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.
,谢~~
,啊,哥,您这个好曲线啊~,笑~^_^

