我正在尝试创建一个嵌套的字典对象,但由于某种原因,它没有为该范围内的每个数字创建一个键。我试图在字典中基本上有多个vlan的信息,所以我可以像vlan [0],vlan [1]等那样访问它们...但它保存最后一个值的信息。例如,如果我把num_of_vlans = 2。我只会在vlan [1]中有值vlan [0]中没有值。我在这做错了什么?我怎样才能得到理想的结果?
num_of_vlans=input("How many VLANS do you need?: ")
num_of_vlans=int(num_of_vlans)
for i in range(num_of_vlans):
print("Enter Information for vlan {0}".format(i+1))
vlan={i:{'name':input("Name: "),
'vlan_id':input("ID: "),
'ip':input("IP: "),},}
答案 0 :(得分:2)
num_of_vlans=input("How many VLANS do you need?: ")
num_of_vlans=int(num_of_vlans)
vlan = {} # Initialized the vlan dict
for i in range(num_of_vlans):
print("Enter Information for vlan {0}".format(i+1))
vlan[i] ={'name':input("Name: "), # Updates the vlan dict in every iteration
'vlan_id':input("ID: "),
'ip':input("IP: "),}
print vlan
您的代码中发生的事情是您重新初始化字典vlan
的每次迭代。它应该更新。
答案 1 :(得分:2)
正如Marlon所说,您正在为每个迭代中的新dict定义vlan
变量。为了建立他的答案,您可以选择使用字典理解(如果不需要前一行的打印语句)。
vlan = {i: {'name': input("Name: "),
'vlan_id': input("ID: "),
'ip': input("IP: ")} for i in range(num_of_vlans)}
同样值得注意的是,当你构建dict时,两个额外的尾随逗号是不必要的/冗余的。