我有一段代碼試圖使用一系列for
循環將字典從一種嵌套格式轉換爲另一種嵌套格式,以便我可以輕鬆地將字典導出爲CSV文件。但是,由於我的腳本循環輸入字典,它會覆蓋輸出字典,而不是附加額外的值,我不明白爲什麼。爲什麼這個詞典在for循環中覆蓋自己?
這裏是輸入字典的格式:
{'data': [{'title': 'Lifetime Likes by Country',
'values': [{'end_time': '2013-11-10T08:00:00+0000',
'value': {'IN': 343818, 'PK': 212632, 'US': 886367}},
{'end_time': '2013-11-11T08:00:00+0000',
'value': {'IN': 344025, 'US': 886485}}]},
{'title': 'Daily Country: People Talking About This',
'values': [{'end_time': '2013-11-10T08:00:00+0000',
'value': {'IN': 289, 'US': 829}},
{'end_time': '2013-11-11T08:00:00+0000',
'value': {'IN': 262, 'US': 836}}]}]}
這裏是我的代碼:
input_dict = function_to_get_input_dict()
filtered_dict = {}
for metric in input_dict['data']:
for day in metric['values']:
parsed_date = parser.parse(day['end_time'])
date_key = parsed_date.strftime('%m/%d/%Y')
filtered_dict[date_key] = {}
filtered_dict[date_key]['Total %s' % metric['title']] = 0
for k, v in day['value'].iteritems():
filtered_dict[date_key]['%s : %s' % (metric['title'], k)] = v
filtered_dict[date_key]['Total %s' % metric['title']] += v
pprint(filtered_dict) #debug
預計輸出字典格式:
{date1:{metric_1_each_country_code:value, metric_1_all_country_total:value, metric_2_each_country_code:value, metric_2_all_country_total:value}, date2:{etc}}
然而,代替我獲取每個日期只有一個度量的輸出字典: {date1:{metric_2_each_country_code:value, metric_2_all_country_total:value}, date2:{etc}}
這似乎是覆蓋指標的關鍵:每一時間值對,我不明白,因爲關鍵的應該是唯一的每個度量使用['%s : %s' % (metric['title'], k)]
公式,所以他們不應該被覆蓋。
我錯過了什麼?
沒錯,這就是問題所在。謝謝。 但是,當我發表評論時,我得到一個關鍵錯誤,因爲我沒有告訴Python我要在字典中嵌套字典。在不覆蓋嵌套字典的情況下做到這一點的最佳方法是什麼? –