从范围创建python中的字典对象

时间:2017-06-25 07:38:47

标签: python dictionary nested range

我正在尝试创建一个嵌套的字典对象,但由于某种原因,它没有为该范围内的每个数字创建一个键。我试图在字典中基本上有多个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: "),},}

2 个答案:

答案 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时,两个额外的尾随逗号是不必要的/冗余的。