如何将字符串类型的字典列表转换为可索引操作的列表?
把字符串形式的字典列表转换成可索引的列表
这里有两种简单可靠的方法解决你的问题:
方法1:使用ast.literal_eval(推荐)
这是最安全也最直接的方式,它专门用来解析Python的字面量结构,不会像eval那样存在执行恶意代码的安全风险,完美适配你这种字符串形式的列表+字典结构。
步骤很简单:
- 导入
ast模块 - 用
ast.literal_eval()解析你的字符串变量
示例代码:
import ast # 你的原始字符串变量 a = "[{'id': 35, 'name': 'Comedy'}, {'id': 18, 'name': 'Drama'}, {'id': 10751, 'name': 'Family'}, {'id': 10749, 'name': 'Romance'}]" # 转换为真正的列表 converted_list = ast.literal_eval(a) # 现在可以正常通过索引访问字典了 print(converted_list[0]) # 输出: {'id': 35, 'name': 'Comedy'}
方法2:使用json.loads
如果你的字符串结构比较规整,也可以用JSON模块来转换,但需要先把字符串里的单引号替换成双引号——因为JSON语法强制要求键和字符串值必须用双引号包裹。
示例代码:
import json a = "[{'id': 35, 'name': 'Comedy'}, {'id': 18, 'name': 'Drama'}, {'id': 10751, 'name': 'Family'}, {'id': 10749, 'name': 'Romance'}]" # 将单引号替换为双引号,适配JSON格式 json_str = a.replace("'", '"') # 转换为列表 converted_list = json.loads(json_str) # 测试索引访问 print(converted_list[1]) # 输出: {'id': 18, 'name': 'Drama'}
⚠️ 注意:如果你的字符串里的字典值本身包含单引号(比如{'name': "O'Neil"}),直接用replace会破坏原有结构,这时候ast.literal_eval是更稳妥的选择。
内容的提问来源于stack exchange,提问作者Aptha Gowda
相关产品推荐
相关产品推荐

