[英]Why my dictionary is not updating in Python?
我有以下代码,输出非常奇怪。
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'}]]}
哪里出错了?
你似乎做了很多不必要的事情。 这里不需要清除临时字典和深拷贝。 这是一个更简单的解决方案:
instances = [[{'InstanceID': iid}] for iid in l]
k = {'a': instances}
至于您的代码中的问题 - 当您执行wsman_invoke_attr.clear()
您仍然持有对您之前使用的字典的引用,因此您同时清除了所有字典。 然后,您再次为所有这些名称添加一个新名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.