我正在尝试创建一个可以附加到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'。 – DSM
我没有得到3.3.3的这种行为:'newdict [0] = 100'产生'{0:100,1:[],2:[],3:[],4:[],5: [],6:[],7:[],8:[],9:[]}'... – MattDMo
@DSM - 是的,谢谢我纠正错误。 – paulski