是否有一种简单的方法可以从格式化元组列表中创建字典。例如如果我这样做:
d={"responseStatus":"SUCCESS","sessionId":"01234","userId":2000004904}
这会创建一个名为d的字典。但是,如果我想从包含相同字符串的字符串创建字典,我就不能这样做
res=<some command that returns {"responseStatus":"SUCCESS","sessionId":"01234","userId":2000004904}>
print res
# returns {"responseStatus":"SUCCESS","sessionId":"01234","userId":2000004904}
d=dict(res)
这会抛出一个错误:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
答案 0 :(得分:1)
我强烈怀疑你手上有json。
import json
d = json.loads('{"responseStatus":"SUCCESS","sessionId":"01234","userId":2000004904}')
会给你你想要的东西。
答案 1 :(得分:0)
使用dict(zip(元组))
>>> u = ("foo", "bar")
>>> v = ("blah", "zoop")
>>> d = dict(zip(u, v))
>>> d
{'foo': 'blah', 'bar': 'zoop'}
注意,如果你有奇数个元组,这将不起作用。
答案 2 :(得分:0)
根据您提供的内容,res
是
# returns {"responseStatus":"SUCCESS","sessionId":"01234","userId":2000004904}
所以计划是从大括号开始抓取字符串到最后并使用json
对其进行解码:
import json
# Discard the text before the curly brace
res = res[res.index('{'):]
# Turn that text into a dictionary
d = json.loads(res)
答案 3 :(得分:-2)
您在特定情况下需要做的就是
d = eval(res)
使用eval时请注意安全,特别是如果你将它与ajax / json混合使用。
<强>更新强>
由于其他人指出您可能通过网络获取此数据并且不仅仅是“如何使此工作”问题,请使用此:
import json
json.loads(res)