这里的目标是将一个表示字典的字符串转换为一个实际的 Python 字典对象。例如,你可能有一个像 INLINECODEf1e1aaf6 这样的字符串,并希望将其转换为 Python 字典 INLINECODE2f950bf1。让我们来了解一下实现这一点的不同高效方法。
使用 ast.literal_eval
来自 INLINECODE1a10569b 模块的 INLINECODE51ccfc2e 函数是将字符串字典转换为字典的最安全、最有效的方法。
Python
CODEBLOCK_0ad7cc28
Output
{‘a‘: 1, ‘b‘: 2}
解释: ast.literal_eval(a) 安全地计算字符串 a 并返回一个 Python 字典。
使用 json.loads
INLINECODEa9cf0c08 可以将 JSON 格式的字符串转换为 Python 字典。然而,JSON 字符串必须对键和字符串值都使用双引号 (INLINECODEfac33690)。使用单引号 (INLINECODEa3b0fd31) 会引发 INLINECODEa193d361,因为 json 模块严格遵循官方 JSON 标准。
Python
CODEBLOCK_8bb146da
Output
{‘a‘: 1, ‘b‘: 2}
解释: json.loads(a) 将字符串 a 解析为 JSON 并返回相应的 Python 字典。
使用 eval
eval 函数也可以用来将字符串字典转换为字典。然而,由于存在安全风险,不建议对不受信任的输入使用它。
Python
CODEBLOCK_b8460e1f
Output
{‘a‘: 1, ‘b‘: 2}
解释: eval(a) 将字符串 a 作为 Python 表达式进行计算,从而将其转换为实际的字典。
使用字符串操作和 dict()
如果输入字符串简单且可预测,我们可以使用字符串操作技术和 dict() 函数手动解析它。
Python
CODEBLOCK_70675013
Output
{"‘a‘": ‘1‘, "‘b‘": ‘2‘}
解释:
- a.strip("{}") 从字符串中移除花括号。
- a.split(", ") 将字符串拆分为单独的键值对。
- item.split(": ") 将每个键值对拆分为键和值。
- dict() 将键值对列表转换为字典。