2017-06-25 6 views
1

入れ子の辞書オブジェクトを作成しようとしていますが、何らかの理由でその範囲内のすべての数字のキーが作成されていません。私は基本的に辞書にある複数のVLANの情報を持っているので、そのようなVLAN [0]、VLAN [1]などのようにアクセスできます。しかし、最後の値の情報は保持しています。たとえば、num_of_vlans = 2を入力したとします。私はvlan [1]に値を持たず、VLAN [0]に値を持たない。私はここで間違って何をしていますか?希望の結果を得るにはどうすればいいですか?あなたのコード内で何が起こったPythonで辞書オブジェクトを作成する範囲

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
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を再初期化されているすべての反復しました。代わりに更新する必要があります。

+0

うわー..私はベッドに行くこのrnをテストすることはできませんが、これは動作すると思います!どうもありがとう! – bimm3rBoy

+2

それが受け入れられupvote場合:) –

2

Marlonは言ったように、各反復で新しいdictに変数vlanを再定義しています。彼の答えに基づいて、前の行のprint文が必要でない場合には、代わりにdictの理解を使用することもできます。

vlan = {i: {'name': input("Name: "), 
'vlan_id': input("ID: "), 
'ip': input("IP: ")} for i in range(num_of_vlans)} 

また、dictを作成したときに余分な2つのコンマが不要/冗長であることにも注意してください。

関連する問題