我有一个由201个整数键(0..200)索引的字典。每个键的值都是一个列表。生成代码如下:
dictionary=dict.fromkeys(range201,[])
当我尝试将属于某个特定索引的项附加到列表中时,会出现这种奇怪的行为,如果我这样做:
dictionary[1].append("foo")
我希望这样:
>>dictionary
{0:[], 1:["foo"],2:[],...}
但我的结局却是:
>>dictionary
{0:["foo"], 1:["foo"],2:["foo"],...}
为了澄清执行操作的上下文,我正在枚举一个值列表,这些值可以是None
或float
,我想跳过None
,并将float
附加到对应于枚举索引的列表中:
for i, value in enumerate(valuesList):
if value is None:
continue
dictionary[i].append(value)
这是一种独立于我使用的整数索引的行为,并且我在所有索引中都得到相同的值。我可以使用一个列表列表来实现我认为相同的结果。但我想了解这种行为。你知道吗
这是正常的行为。字典中的所有条目在初始化时都引用了相同的列表。因此,当使用一个键附加一个元素时,由于所有键都指向同一个列表,因此修改将应用于dic的所有条目。你知道吗
请尝试以下操作:
相关问题 更多 >
编程相关推荐