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

将矩阵各列追加到字典不同键时出现值同步重复问题求解

问题原因

这是Python中可变对象引用共享导致的问题:

  • 你先创建了list_dict = [[] for i in range(10)]这一个嵌套列表对象
  • 后续给字典赋值的操作out_dict_2.update({'key_a': list_dict, 'key_b': list_dict, 'key_c': list_dict}),本质是让三个键都指向了同一个list_dict的内存地址,没有生成独立的新列表
  • 因此不管你修改key_a、key_b还是key_c对应的子列表,都是在修改同一块内存里的内容,最终三个键的取值自然完全相同。

解决方案

给每个字典键单独生成独立的嵌套列表,不要复用同一个列表对象即可,修正后的代码如下:

out_dict_2 = {}
# 每个key单独生成独立的10个空列表的嵌套结构,互不干扰
out_dict_2['key_a'] = [[] for i in range(10)]
out_dict_2['key_b'] = [[] for i in range(10)]
out_dict_2['key_c'] = [[] for i in range(10)]

for index in range(10):
    for line in list_2:
        line = line.strip()
        line = line.split()
        if areallnumbers(line): # 校验列表中所有元素是否均可转为float类型
            out_dict_2['key_a'][index].append(line[0])
            out_dict_2['key_b'][index].append(line[1])
            out_dict_2['key_c'][index].append(line[2])

如果想要更简洁的写法,也可以用字典推导式一次性生成:

out_dict_2 = {k: [[] for _ in range(10)] for k in ['key_a', 'key_b', 'key_c']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:04