如何编辑属性?

时间:2018-03-08 23:04:51

标签: python

我想用我的代码打印出这些结果:

{'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

#-----------------------------------

3 个答案:

答案 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

#-----------------------------------
相关问题