我以前从未遇到过这个问题,并且已经尝试了很长一段时间来解决它,但似乎无法解决这个问题(尝试了各种方法,包括创建副本、深入复制和附加到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上遇到过这个问题。也许我错过了什么?
提前感谢您的帮助/洞察力!
发布于 2016-07-20 16:39:21
更改:
bigram_values_dict_list.append(bigram_values_dict)至:
bigram_values_dict_list.append(bigram_values_dict.copy())这样,您将在列表中添加字典的副本,因此将来对字典的修改不会影响已经附加的字典。
另一种选择是(重新)在for循环的每一次迭代中定义字典。
https://stackoverflow.com/questions/38486144
复制相似问题