2013-10-11 88 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

作品完美。謝謝! –