向函数传入字典参数时报TypeError: string indices must be integers如何解决
问题原因与解决方案
问题根源
你定义的data字典中,printing_settings、transformations、annotations三个键对应的值都是JSON格式字符串,而非Python字典对象。你直接对字符串使用["layer_height"]这种字典键索引方式,就会触发TypeError: string indices must be integers报错,和你后续尝试转换值类型的操作无关,报错在索引取值阶段就已经触发。
修复步骤
- 引入Python内置的
json模块,用于JSON字符串和Python对象的互相转换 - 在取嵌套字段前,先把对应JSON字符串反序列化为Python字典
代码示例
import json def myfunction(params_dict): # 反序列化printing_settings字符串为字典 printing_settings = json.loads(params_dict["printing_settings"]) # 正常读取嵌套字段 layer_height = printing_settings["layer_height"] # 其他嵌套字段按需反序列化即可 transformations = json.loads(params_dict["transformations"]) translate_z = transformations["translate"]["z"] # 后续业务逻辑
如果后续需要把修改后的嵌套字段重新拼接回原字典用于接口请求,使用json.dumps(修改后的字典)方法转回字符串格式即可。
内容的提问来源于stack exchange,提问作者user1584421
相关产品推荐
相关产品推荐

