我在向字典中的某个条目添加特定值时遇到问题。该值不是添加到嵌套字典中的一个特定条目,而是添加到字典中的所有条目。例如,如果我写
data_dict['2022-03-07']['政治行动委员会'] += 1
它将在 [every_date]['政治行动委员会'] 中添加条目 1
这是我的代码
import pandas
import datetime as dt
import plotly.graph_objects as go
import plotly.express as px
data_set = pandas.read_csv(r"C:\Users\Miles\Downloads\schedule_a-2024-03-02T09 13 57.csv")
data_dict = {}
contribution_dict = {"INDIVIDUAL":0,'ORGANIZATION':0,'POLITICAL ACTION COMMITTEE':0,'CANDIDATE':0,
'OTHER COMMITTEE':0, 'CAMPAIGN COMMITTEE':0 }
# a_list = ['INDIVIDUAL', 'ORGANIZATION', 'POLITICAL ACTION COMMITTEE', 'CANDIDATE', 'OTHER COMMITTEE',
# 'CAMPAIGN COMMITTEE']
list = []
for all_dates in range(len((data_set['contribution_receipt_date']))):
contribution_date = data_set.at[all_dates, 'contribution_receipt_date'][:10]
dummy = dt.date(int(contribution_date[:4]), int(contribution_date[5:7]), int(contribution_date[8:]))
if dummy in list:
pass
else:
list.append(dummy)
list.sort()
for all_values in range(len(list)):
data_dict[str(list[all_values])] = contribution_dict
data_dict['2022-03-07']['POLITICAL ACTION COMMITTEE'] += 1
~~~
这是因为字典在Python中是可变类型。 在这个片段中:
for all_values in range(len(list)):
data_dict[str(list[all_values])] = contribution_dict
您正在将相同的contribution_dict字典(相同的对象,内存中的相同地址)分配给所有data_dict键。
最快的解决方法是在每次循环迭代中创建一个新字典:
for all_values in range(len(list)):
data_dict[str(list[all_values])] = contribution_dict.copy()