Python如何为字典同一个key追加更新数据 避免原有值被覆盖
问题核心原因
Python 字典的键具有全局唯一性,你贴的预期输出格式本身就是无效的Python字典结构,哪怕你手动写出那样的重复key字典,运行后只会保留最后一个key1对应的值,前面的会被自动覆盖。你原本使用的update方法遇到重复key时会直接覆盖旧值,这就是你拿不到预期结果的直接原因。另外注意不要用dict作为变量名,这是Python内置类名,会覆盖原生功能。
解决方案
根据你的实际使用场景,可选两种实现方式:
方案1:同键对应嵌套列表(保留字典结构)
如果不想改动字典的基础结构,可以把同一个key对应的所有值存为嵌套列表,需要取值时按索引调取即可:
# 初始化字典 my_dict = {} key1 = "key1" # 第一次写入数据 if key1 not in my_dict: my_dict[key1] = [] my_dict[key1].append(['value1', 'value2', 'value3']) # 第二次写入同key数据 my_dict[key1].append(['value4', 'value5', 'value6']) print(my_dict) # 输出:{'key1': [['value1', 'value2', 'value3'], ['value4', 'value5', 'value6']]}
方案2:用列表套元组存储(支持重复键)
如果必须保留重复键的配对结构,放弃字典改用列表存储键值对元组即可:
data = [] key1 = "key1" data.append((key1, ['value1', 'value2', 'value3'])) data.append((key1, ['value4', 'value5', 'value6'])) print(data) # 输出:[('key1', ['value1', 'value2', 'value3']), ('key1', ['value4', 'value5', 'value6'])]
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

