当迭代地将值附加到字典中的列表时,所有字典键都会改变

时间:2017-11-07 04:38:52

标签: python api dictionary google-analytics append

我在这里做的是从ReportRequest对象(“响应”)中获取包含Google Analytics数据的数据。我打算将这个数据放在这个对象中,并将其粘贴到一个字典中,其中每个键都是一个值列表:

for report in response.get('reports', []):
    columnHeader     = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders    = columnHeader.get('metricHeader', 
{}).get('metricHeaderEntries', [])
    rows             = report.get('data', {}).get('rows', [])


metrics_ls = [str(metricHeaders[x]['name'][3:]) for x,y in enumerate(metricHeaders)]
    DataDict = dict.fromkeys(metrics_ls, [])


# stick each piece of data in appropriate place of DataDict
for cur_row in rows:
    cur_vals = cur_row.get('metrics', [])[0]
    for i, cur_metric in enumerate(metrics_ls):
        DataDict[cur_metric].append( float(cur_vals['values'][i]) )

在上面,我用一组包含空列表的键[]来初始化DataDict。然后,我将值附加到for循环中列表的相应键。但是,最后,我的所有键都包含相同的列表,这只是所有值的巨大列表。换句话说,DataDict的每个键包含相同的数字集,但是我想要的是,如果所有这些数字的子集都进入我的dict的相应键,那么dict包含几个键,每个键都有不同的列表数字。

0 个答案:

没有答案