【问题标题】:Unexpected output when appending dict to list将 dict 附加到列表时出现意外输出
【发布时间】:2015-10-21 21:34:40
【问题描述】:

我用 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 次。我什么都试过了,但我快疯了。有人知道吗?

亲切的问候。

【问题讨论】:

  • 您正在用对完全相同的字典对象的多个引用填充new_list。将new_dict = 移入 for 循环...
  • 我现在觉得自己好蠢。感谢您的快速和良好的响应

标签: python list loops dictionary google-analytics


【解决方案1】:

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

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

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-16
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 2022-06-22
    相关资源
    最近更新 更多