2013-10-11 91 views
0

我得到来自外部API的结果作为格式的字典:如何在python中转换此字典?

{data:[{values:[{'end_time':'2013-10-03T07:00:00+0000', value:{'mobile':4, 'search':3}}, {'end_time':'2013-10-04T07:00:00+0000', value:{'source':2}}]}]}

,我想它的格式转换成词典:

{'2013-10-03T07:00:00+0000':{'mobile':4, 'search':3},'2013-10-04T07:00:00+0000':{'source':2}}

当我尝试以下操作,我得到的错误号为SyntaxError: keyword can't be an expression,以output_dict开头的行:

def dict_cleaner(input_dict): 
    for day in input_dict['data'][0]['values'][0]['end_time']: 
     output_dict = dict(input_dict['data'][0]['values'][0]['end_time']=input_dict['data'][0]['values'][0]['value']) 
    return output_dict 

我在这里做错了什么?

+2

在第三行,电话里面'dict'的,你写'input_dict [ '数据'] [0] [ '值'] [0] [ 'END_TIME'] = input_dict [ '数据'] [0] [ '值'] [0] [ '值']'。这是什么意思?我不认为Python喜欢那里有一个等号。 – Kevin

+0

我正在尝试使用字典(key = value)创建和更新字典。也许问题在于,如果我正在循环这本字典,它会在尝试添加第二个值时窒息,所以或许我应该先执行output_dict = dict(),然后执行output_dict.update = dict(key = value)。但是,现在我看着它,你完全正确,我甚至不需要这个循环。 –

+0

'update'可能是一个好主意,虽然'output_dict.update = ...'没有太大意义。 'update'是一种方法,所以你应该使用圆括号来调用它,而不是使用equals来分配它。 – Kevin

回答

1

@凯文是对的。如果你想创建一个字典,为什么不只是做

{input_dict['data'][0]['values'][0]['end_time']: input_dict['data'][0]['values'][0]['value']} 

也,你可以尝试理解,而不是循环

output_dict = {d['end_time']: d['value'] for d in input_dict['data'][0]['values']} 
+0

作品完美。谢谢! –