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

创建字典字符串时出现KeyError: '"param1"'错误的技术咨询

解决Python字符串格式化时的KeyError: '"param1"'问题

这个坑我踩过!你遇到的错误是因为str.format()的解析规则导致的:当你在字符串里写{"param1": {}, "param2": {}}时,Python会把外层的{}和里面的键名"param1"组合起来,误以为你要传递一个名为"param1"的关键字参数给format(),但你并没有传这个参数,所以触发了KeyError。

下面给你几个可行的解决方案,按推荐程度排序:

1. 最稳妥:用json.dumps()生成标准JSON字符串

如果你最终要生成的是合法的JSON格式,直接用Python的json模块是最优解——它会自动处理所有引号、大括号和特殊字符的转义,完全不用手动拼接:

import json

param1 = "abc"
param2 = "def"
input_data = json.dumps({"param1": param1, "param2": param2})
# 输出结果:{"param1": "abc", "param2": "def"}

这种方法不仅避免了格式化错误,还能处理更复杂的数据类型(比如列表、数字、带特殊字符的字符串),强烈推荐。

2. 转义大括号适配str.format()

如果你不想引入json模块,需要手动转义字符串中的大括号:用**双大括号{{}}**表示普通的单大括号,这样format()就不会把它们解析成占位符了。同时记得给参数值加上引号,保证输出是合法的键值对格式:

param1 = "abc"
param2 = "def"
input_data = """{{"param1": "{}", "param2": "{}"}}""".format(param1, param2)
# 输出结果:{"param1": "abc", "param2": "def"}

注意:如果你的参数本身包含双引号,这种方法会出问题,这也是为什么更推荐用json.dumps()的原因。

3. 用f-string(Python3.6+)简化写法

如果你用的是Python3.6及以上版本,f-string写法更简洁,同样需要转义大括号:

param1 = "abc"
param2 = "def"
input_data = f"""{{"param1": "{param1}", "param2": "{param2}"}}"""
# 输出结果和上面一致

这种写法可读性更好,但同样存在手动处理引号的问题,适合简单场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:37:38