首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继续覆盖-我做错了什么?

继续覆盖-我做错了什么?
EN

Stack Overflow用户
提问于 2016-07-20 16:37:59
回答 1查看 38关注 0票数 1

我以前从未遇到过这个问题,并且已经尝试了很长一段时间来解决它,但似乎无法解决这个问题(尝试了各种方法,包括创建副本、深入复制和附加到DataFrame中)。

基本上,我试图循环遍历一个列表,创建一个字典并将该字典附加到另一个列表中。字典的创建每次都是唯一的,但它覆盖了前面的所有内容并添加了它。

如果有一个明显的答案,提前道歉--在这方面还是很新的。

代码见下文:

代码语言:javascript
复制
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)

和产出:

代码语言:javascript
复制
{'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上遇到过这个问题。也许我错过了什么?

提前感谢您的帮助/洞察力!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-20 16:39:21

更改:

代码语言:javascript
复制
bigram_values_dict_list.append(bigram_values_dict)

至:

代码语言:javascript
复制
bigram_values_dict_list.append(bigram_values_dict.copy())

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38486144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档