在Python字典中添加术语

时间:2015-06-24 17:17:20

标签: python dictionary hierarchy

我有以下有效词典。我正在尝试在“expansion_modules”组下添加另一组术语。

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

3 个答案:

答案 0 :(得分: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'}

答案 1 :(得分:0)

像这样访问它:

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

答案 2 :(得分:0)

Anand的回答是正确的,因为它回答了你的问题。

我想补充说,经常使用[0,1,...]作为键的字典应该只是列表。而不是:

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

也许你应该:

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