将dict附加到列表时出现意外输出

时间:2015-07-30 13:33:45

标签: python list loops dictionary google-analytics

我在Python 2.7中编写了一个小API,它从谷歌分析中检索数据并将其发送到我自己的网站。

这是输入

{'country': '(not set)', 'visits': '1'}
{'country': 'Belgium', 'visits': '9'}
{'country': 'Brazil', 'visits': '2'}
{'country': 'Germany', 'visits': '2'}
{'country': 'Mexico', 'visits': '2'}
{'country': 'Netherlands', 'visits': '38'}
{'country': 'Philippines', 'visits': '1'}
{'country': 'Portugal', 'visits': '1'}
{'country': 'Spain', 'visits': '1'}
{'country': 'Thailand', 'visits': '1'}
{'country': 'United Kingdom', 'visits': '1'}
{'country': 'United States', 'visits': '1'}

当我将其附加到包含以下代码的列表时:

new_dict = {}
new_list = []
for row in query:
    for count, attribute in enumerate(list_of_dim_met):    
        new_dict.update({
            attribute.replace('ga:',''): row[count].encode('ascii','ignore')
            })
    new_list.append(new_dict)
print new_list

它只与美国重复最后一行12次。我尝试了一切,但我变得疯狂。有人知道吗?

亲切的问候。

1 个答案:

答案 0 :(得分:1)

因为代码在循环中使用相同的字典并更新dictinoary,并将相同的字典附加到列表中。

在循环中创建一个新词典,而不是使用相同的词典。

new_list = []
for row in query:
    for count, attribute in enumerate(list_of_dim_met):    
        new_dict = {
            attribute.replace('ga:',''): row[count].encode('ascii','ignore')
        }
    new_list.append(new_dict)