使用kwargs向Python字典添加键值对触发格式化错误如何解决
错误原因
- 格式化参数不匹配
你代码中字典值部分的写法"%s" %(key,value)仅包含1个%s占位符,却传入了key、value两个参数用于格式化,无法完成参数匹配,直接触发TypeError: not all arguments converted during string formatting报错。 - 循环覆盖逻辑错误
即便修复格式化问题,你在循环中每次都为element[elementKey]重新赋值为仅含单个键值对的新字典,最终只会保留kwargs中最后一组键值对,完全达不到生成多键字典的预期。
修复后的代码
写法1:循环追加键值对(适合需要对单个键值做额外处理的场景)
def generateData(elementKey:str, element:dict, **kwargs): # 先初始化目标字段为空字典 element[elementKey] = {} for key, value in kwargs.items(): element[elementKey][key] = value return element
写法2:直接赋值kwargs(极简写法,无额外处理需求时优先用)
**kwargs本身就是打包好的关键字参数字典,直接赋值即可:
def generateData(elementKey:str, element:dict, **kwargs): element[elementKey] = kwargs return element
调用代码和你原写法一致即可,运行后就能得到预期的{'city': {'name': 'Paris', 'label': 'Paris', 'postcode': '75000'}}结果。
内容的提问来源于stack exchange,提问作者Menryck
相关产品推荐
相关产品推荐

