【发布时间】:2013-12-21 04:38:05
【问题描述】:
我正在尝试创建一个可以附加到 for 循环中的列表字典。但是,如果我使用fromkeys 创建一个字典,则该列表将成为“指针”的副本,而不是新列表。例如,
newdict = dict.fromkeys(range(10), [])
-- 或--
newdict = dict.fromkeys(range(10), list())
两者都产生相同的数据结构,即具有相同列表作为值对的字典。这样当任何密钥被更新时,例如- newdict[0].append(100),print newdict对应的输出为:
{0: [100], 1: [100], 2: [100], 3: [100], 4: [100], 5: [100], 6: [100], 7: [100], 8: [100], 9: [100]}
关于如何避免这种情况而不必在 for 循环中迭代的任何想法?提前致谢。
【问题讨论】:
-
次要:你的意思是
newdict[0].append(100),或者newdict[0] += [100],而不是newdict[0] = 100。 -
我在 3.3.3 中没有出现这种行为:
newdict[0]=100产生{0: 100, 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [], 8: [], 9: []}... -
@DSM - 是的,谢谢我更正了。
标签: python list dictionary copy