如何在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中将字符串列表转换为字典列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 3 中将字典列表转换为 CSV

在python中将列表错误地转换为数据框[重复]

如何在 Python 中将列表转换为带有空格的字符串?

python怎么把列表转换成字符串?

如何在python中将文本字符串列表转换为熊猫数据框?

如何在python中将字符串列表转换为格式正确的json? [复制]