整数键嵌套字典迭代赋值异常问题求助
嵌套字典赋值时所有键共享值的问题解决
问题根源
你用dict.fromkeys()创建字典时,第二个参数是可变对象(这里是嵌套字典),所有主键都会指向同一个嵌套字典对象,而非为每个键生成独立的副本。所以不管修改哪个主键对应的嵌套字典,其他主键的都会同步变化。
修复代码
用字典推导式替代fromkeys(),为每个主键生成独立的嵌套字典:
import numpy as np # 字典推导式:每个键对应独立的嵌套字典 dic = {i: {'key1': [], 'key2': [], 'key3': []} for i in np.arange(3)} list1 = [0.9, 0.8, 0.7] dic[0]['key1'].append(list1[0]) dic[1]['key1'].append(list1[1]) dic[2]['key1'].append(list1[2]) for i in dic.keys(): dic[i]['key3'].append(list1[i]) print(dic)
预期输出
{0: {'key1': [0.9], 'key2': [], 'key3': [0.9]}, 1: {'key1': [0.8], 'key2': [], 'key3': [0.8]}, 2: {'key1': [0.7], 'key2': [], 'key3': [0.7]}}
原理说明
字典推导式会循环每个主键i,每次都新建一个{'key1': [], 'key2': [], 'key3': []}字典,确保每个主键对应的嵌套字典都是独立的内存对象,修改其中一个不会影响其他。
内容的提问来源于stack exchange,提问作者Jamezco7
相关产品推荐
相关产品推荐

