2015-06-24 102 views
0

我有以下有效詞典。我試圖在「expansion_modules」組下添加另一組術語。向Python詞典添加條款

lan_router = { 
    'HOSTNAME1':{ 
     'system_type': 'MDF', 
     'chassis':{ 
      0:{ 
       'model_num': 'EX4550', 
       'vc_role': 'MASTER', 
       'expansion_modules':{ 
        1:{ 
         'pic_slot': 1, 
         'expan_model': 'EX4550VCP' 
        } 
       }, 
       'built-in_modules':{ 
        0:{ 
         'pic_slot': 2, 
         'built-in_model': 'EX4550BI' 
        } 
       } 
      } 
     } 
    } 
} 

我要添加以下在「expansion_modules」不刪除「1」 ......

2:{'pic_slot': 2, 'expan_model': 'EX4550SFP'} 

下面的代碼將我想要什麼,但刪除現有項...

print lan_router['HOSTNAME1']['chassis'][0]['expansion_modules'][1]['expan_model'] 

lan_router['HOSTNAME1']['chassis'][0]['expansion_modules'] = { 2: {} } 
lan_router['HOSTNAME1']['chassis'][0]['expansion_modules'][2] = {'pic_slot' : 1, 'expan_model' : 'EX45504XSFP'} 
+2

剛落,那第二道防線。 –

回答

4

你不需要行 - lan_router['HOSTNAME1']['chassis'][0]['expansion_modules'] = { 2: {} },它取代expansion_modules裏面的字典,只是刪除這個並執行休息。

碼 -

print lan_router['HOSTNAME1']['chassis'][0]['expansion_modules'][1]['expan_model'] 

lan_router['HOSTNAME1']['chassis'][0]['expansion_modules'][2] = {'pic_slot' : 1, 'expan_model' : 'EX45504XSFP'} 
0

訪問這樣的:

lan_router['HOSTNAME1']['chassis'][0]['expansion_modules'][2] = {}

0

阿南德的答案是正確的,因爲它回答你的問題。

我會補充說,[0,1,...]的鍵詞應該只是列表。相反的:

'expansion_modules':{ 
    1:{ 
     'pic_slot': 1, 
     'expan_model': 'EX4550VCP' 
    }, 
    2:{ ... } 
} 

也許你應該有:

'expansion_modules':[ 
    { 
     'pic_slot': 1, 
     'expan_model': 'EX4550VCP' 
    }, 
    { ... } 
]