gpt4 book ai didi

python - 字典列表继续覆盖 - 我做错了什么?

转载 作者:行者123 更新时间:2023-12-01 03:49:24 25 4
gpt4 key购买 nike

我以前没有遇到过这个问题,并且已经尝试解决它有一段时间了,但似乎无法找出问题(尝试了各种方法,包括创建副本、深拷贝和附加到 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 循环的每次迭代时(重新)定义字典。

关于python - 字典列表继续覆盖 - 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38486144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com