如何在python中从一组格式正确的元组创建一个字典

时间:2015-07-08 00:24:19

标签: python dictionary

是否有一种简单的方法可以从格式化元组列表中创建字典。例如如果我这样做:

    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 

4 个答案:

答案 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)