繁体   English   中英

词典列表继续被覆盖-我在做什么错?

[英]Dict List Continues to Overwrite - What am I doing wrong?

我以前没有这个问题,现在已经尝试解决了一段时间,但似乎无法找出问题(尝试了很多事情,包括创建副本,深层副本以及附加到DataFrame)。

基本上,我试图遍历列表,创建字典并将该字典附加到其他列表。 字典创建每次都是唯一的,但是它将覆盖所有先前的字典并添加它。

如果有明显的答案,请提前抱歉-仍然很新。

参见下面的代码:

bigram_values_dict_list = []
bigram_values_dict = {}
counter = 0

for bigram in bigram_string_list:
    bigram_values_dict['bigram'] = bigram
    bigram_values_dict['impressions'] = get_total_impressions(bigram)

    print(bigram_values_dict)

    counter += 1

    if counter % 10 == 0:
        print(bigram_values_dict_list)

    bigram_values_dict_list.append(bigram_values_dict)

并输出:

{'bigram': 'mobile site', 'impressions': 10344864}
{'bigram': 'learn more!', 'impressions': 4167059}
{'bigram': 'lawn &', 'impressions': 742291}
{'bigram': '& garden', 'impressions': 980153}
[{'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}]

我不认为我在Python 2中遇到过这个问题。也许我缺少了什么?

在此先感谢您的帮助/见解!

更改:

bigram_values_dict_list.append(bigram_values_dict)

至:

bigram_values_dict_list.append(bigram_values_dict.copy())

这样,您字典的副本添加到列表中,因此将来对字典的修改将不会影响已经添加的字典。

另一种选择是在for循环的每次迭代中(重新)定义字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM