字典列表继续覆盖 - 我做错了什么?
Dict List Continues to Overwrite - What am I doing wrong?
我以前没有遇到过这个问题,现在已经尝试解决它一段时间了,但似乎无法弄清楚这个问题(尝试了各种方法,包括创建副本、深层副本和附加到数据框)。
基本上,我试图遍历一个列表,创建一个字典并将该字典附加到另一个列表。每次创建的字典都是唯一的,但它会覆盖之前的所有内容并添加它。
如果有明显的答案,请提前致歉 - 这还是很新的。
代码见下方:
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
循环的每次迭代中 (重新)定义 字典。
我以前没有遇到过这个问题,现在已经尝试解决它一段时间了,但似乎无法弄清楚这个问题(尝试了各种方法,包括创建副本、深层副本和附加到数据框)。
基本上,我试图遍历一个列表,创建一个字典并将该字典附加到另一个列表。每次创建的字典都是唯一的,但它会覆盖之前的所有内容并添加它。
如果有明显的答案,请提前致歉 - 这还是很新的。
代码见下方:
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
循环的每次迭代中 (重新)定义 字典。