我有下面的代码, 结果很奇怪
wsman_invoke_attr = {}
l = [u'BIOS.Setup.1-1:Slot3', u'BIOS.Setup.1-1:Slot2', u'BIOS.Setup.1-1:Slot1', u'BIOS.Setup.1-1:Slot5', u'BIOS.Setup.1-1:Slot4']
w = []
k = {"a":w}
for i in l:
wsman_invoke_attr["InstanceID"] = i
w.append([wsman_invoke_attr])
k["a"] = copy.deepcopy(w)
wsman_invoke_attr.clear()
print k
输出是{'a': [[{'InstanceID': u'BIOS.Setup.1-1:Slot4'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot4'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot4'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot4'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot4'}]]}
我在找的地方
{'a': [[{'InstanceID': u'BIOS.Setup.1-1:Slot3'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot4'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot2'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot5'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot1'}]]}
哪里出了问题
你好像在做很多不必要的事。在这里不需要清除临时字典和deepcopy。这里有一个更简单的解决方案:
至于代码中的问题—当您执行
wsman_invoke_attr.clear()
操作时,您仍然持有对以前使用的词典的引用,因此您同时清除了所有这些引用。然后你再给它们加一个新名字相关问题 更多 >
编程相关推荐