无法为嵌套字典中的内层字典正确赋值的问题排查
问题原因分析
使用dict.fromkeys(iss, {a: None})创建字典时,所有键对应的都是同一个内层字典对象。fromkeys方法的特性是将第二个参数作为所有键的统一值,当这个参数是可变对象(比如字典)时,所有键都会共享该对象的引用。循环中每次修改swhls[i][a],本质都是在修改同一个内层字典,最后一次循环将值设为'4',因此所有键对应的结果都显示为这个最终值。
正确实现方案
方案一:字典推导式(最简洁)
通过字典推导式为每个键生成独立的内层字典,避免引用共享:
a = 'aa' iss = ['1', '2', '3', '4'] swhls = {i: {a: i} for i in iss} print(swhls)
方案二:循环初始化
先创建空字典,再逐个为键生成新的内层字典:
a = 'aa' iss = ['1', '2', '3', '4'] swhls = {} for i in iss: swhls[i] = {a: i} print(swhls)
如果需要先初始化内层字典为{a: None}再赋值,可调整为:
a = 'aa' iss = ['1', '2', '3', '4'] swhls = {} for i in iss: swhls[i] = {a: None} # 每个键对应全新的字典对象 swhls[i][a] = i print(swhls)
内容的提问来源于stack exchange,提问作者Kamil
相关产品推荐
相关产品推荐

