我正在尝试将字符串转换为具有dict
功能的字典,如此
import json
p = "{'id':'12589456'}"
d = dict(p)
print d['id']
但是我收到以下错误
ValueError: dictionary update sequence element #0 has length 1; 2 is required
为什么会失败?我该如何解决这个问题?
答案 0 :(得分:6)
您拥有的是一个字符串,但dict
函数只能迭代元组(键值对)来构造字典。请参阅dict
文档中提供的示例。
在这种特殊情况下,您可以使用ast.literal_eval
将字符串转换为相应的dict
对象,就像这样
>>> p = "{'id':'12589456'}"
>>> from ast import literal_eval
>>> d = literal_eval(p)
>>> d['id']
'12589456'
答案 1 :(得分:1)
由于p
是一个包含JSON(ish)的字符串,因此必须先加载它以获取Python字典。然后您可以访问其中的项目:
p = '{"id":"12589456"}'
d = json.loads(p)
print d["id"]
但是,请注意p
中的值实际上不是JSON; JSON要求(以及Python json
模块强制执行)字符串是用双引号引用的,而不是单引号。我已经在我的示例中对其进行了更新,但根据您的示例,您可能还有更多工作要做。