如何在Python中将字符串列表转换为字典列表[重复]
Posted
技术标签:
【中文标题】如何在Python中将字符串列表转换为字典列表[重复]【英文标题】:How to convert list of string to list of dictionary in Python [duplicate] 【发布时间】:2018-06-04 19:49:16 【问题描述】:我有这样的项目列表:
["'Collaboration':5,'Communication':5,'Creativity':4,'Critical Thinking':4", "'Collaboration':5,'Communication':5,'Creativity':5,'Critical Thinking':4"]
每个项目都是一个字典字符串。如何将字符串列表转换为字典列表。我需要这样的最终结果:
['Collaboration':5,'Communication':5,'Creativity':4,'Critical Thinking':4, 'Collaboration':5,'Communication':5,'Creativity':5,'Critical Thinking':4]
【问题讨论】:
【参考方案1】:您应该为此使用json.loads
。您的字符串使用单引号来封装字符串。对于 JSON,您必须用双引号替换它们。
import json
l = ["'Collaboration':5,'Communication':5,'Creativity':4,'Critical Thinking':4", "'Collaboration':5,'Communication':5,'Creativity':5,'Critical Thinking':4"]
result = [json.loads(x.replace("'", '"')) for x in l]
【讨论】:
我收到错误AttributeError: 'str' object has no attribute 'read'
如果我将代码粘贴到 python 它对我有用。可以试一试吗?【参考方案2】:
导入 ast 并使用 literal_eval。这样就可以了。
import ast
lst = ["'Collaboration':5,'Communication':5,'Creativity':4,'Critical Thinking':4", "'Collaboration':5,'Communication':5,'Creativity':5,'Critical Thinking':4"]
res = [ast.literal_eval(x) for x in lst]
print(res)
【讨论】:
它正在转换,但是当我尝试遍历列表中的项目时,它说它是一种字符串而不是字典。我必须将其转换为字典?如果是这样,我该怎么做? 你能给出一些你想做/想做什么的代码示例吗?哪个循环不起作用? 如果我在 res 中为 x 打印 type(x),那么我得到以上是关于如何在Python中将字符串列表转换为字典列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章