我想用我的代码打印出这些结果:
{'name': 'asm0', 'size': '1024000'}
{'name': 'asm1', 'size': '1024000'}
{'name': 'asm2', 'size': '1024000'}
但它看起来像这样..
{'name': 'asm0', 'size': '1024000'}
{'name': 'asm01', 'size': '1024000'}
{'name': 'asm012', 'size': '1024000'}
请参阅下面的示例代码,让我知道如何修复它..
#-----------------------------------
!/usr/bin/python
vdisks = {
"name": "asm",
"size": "1024000"
}
for i in range(3):
new_vdisks = vdisks
new_vdisks["name"] = vdisks["name"] + str(i)
print new_vdisks
#-----------------------------------
答案 0 :(得分:1)
您每次都在编辑相同的dict
。每次将迭代次数添加到"name"
值时。
你可以制作一个copy
。
from copy import copy
for i in range(3):
new_vdisks = copy(vdisks)
new_vdisks["name"] = vdisks["name"] + str(i)
print new_vdisks
答案 1 :(得分:0)
每次通过for循环时,都会覆盖vdisks["name"]
的值。
它以“asm”开始,然后向其添加0,然后在下一次迭代中添加1,最后在第三次迭代中添加2。
您可以创建一个新变量来存储原始值并改为添加:
vdisks = {
"name": "asm",
"size": "1024000"
}
name = vdisks["name"]
for i in range(3):
new_vdisks = vdisks
new_vdisks["name"] = name + str(i)
print new_vdisks
因为它永远不会通过for
循环,所以新变量永远不会从给出预期输出的asm
更改。
答案 2 :(得分:0)
#-----------------------------------
#!/usr/bin/python
vdisks = {
"name": "asm",
"size": "1024000"
}
for i in range(3):
vdisks["name"] = "asm"
new_vdisks = vdisks
new_vdisks["name"] = vdisks["name"] + str(i)
print new_vdisks
#-----------------------------------