You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌套字典赋值异常:修改指定条目却同步所有日期对应值

问题根源与解决办法

你遇到的问题核心是字典引用传递的坑:你定义的contribution_dict是一个单独的字典对象,在循环给data_dict赋值时,所有日期键指向的都是同一个字典的引用,不是各自独立的副本。所以你修改其中一个日期下的键值,所有日期对应的字典都会跟着变——因为它们本质上是同一个东西。

解决步骤

把循环中赋值的代码改成每次创建contribution_dict的副本,而不是直接用原字典。有几种简单的方式:

  1. 使用字典的copy()方法:
for all_values in range(len(list)):
    data_dict[str(list[all_values])] = contribution_dict.copy()
  1. 用dict()构造函数创建副本:
for all_values in range(len(list)):
    data_dict[str(list[all_values])] = dict(contribution_dict)
  1. 直接在循环里重新定义字典(适合结构简单的情况):
for all_values in range(len(list)):
    data_dict[str(list[all_values])] = {
        "INDIVIDUAL":0,
        'ORGANIZATION':0,
        'POLITICAL ACTION COMMITTEE':0,
        'CANDIDATE':0,
        'OTHER COMMITTEE':0, 
        'CAMPAIGN COMMITTEE':0  
    }

额外优化建议

你手动处理日期列表的代码可以用pandas简化,不用写循环:

# 直接把日期列转成datetime类型,提取日期部分去重排序
data_set['contribution_receipt_date'] = pandas.to_datetime(data_set['contribution_receipt_date']).dt.date
unique_dates = sorted(data_set['contribution_receipt_date'].unique())

# 构建data_dict
data_dict = {str(date): contribution_dict.copy() for date in unique_dates}

这样代码更简洁,也避免手动处理日期可能出现的错误。修改后再执行data_dict['2022-03-07']['POLITICAL ACTION COMMITTEE'] += 1,就只会修改对应日期下的值了。

内容的提问来源于stack exchange,提问作者Amaranth_Gray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:23:18