构造的config,是字典模式么,里面可以再嵌套字典,怎么获取里面的值?

请问下,下面的代码里这个config是个什么数据格式?是字典么?可以用get函数获取里面的值么?这里面又嵌套字典么?

CONFIG = {
    'model_save_dir': "./output/IsolatingSwitch",
    'num_classes': 2,
    'total_images': 200,
    'epochs': 20,
    'batch_size': 32,
    'image_shape': [3, 224, 224],
    'LEARNING_RATE': {#学习率
        'params': {
            'lr': 0.00375  #学习率数值为0.00375           
        }
    },
    
    'OPTIMIZER': {#优化器
        'params': {
            'momentum': 0.9#优化器参数为0.9
        },

        'regularizer': {
            'function': 'L2',
            'factor': 0.000001
        }
    },


    'LABEL_MAP': [#标签的类别
        "IsolatingSwitch_Open",
        "IsolatingSwitch_Close",
    ]
}

字典可以嵌套。通过[]或者get取值都可以

CONFIG = {
    'model_save_dir': "./output/IsolatingSwitch",
    'num_classes': 2,
    'total_images': 200,
    'epochs': 20,
    'batch_size': 32,
    'image_shape': [3, 224, 224],
    'LEARNING_RATE': {#学习率
        'params': {
            'lr': 0.00375  #学习率数值为0.00375           
        }
    },
    
    'OPTIMIZER': {#优化器
        'params': {
            'momentum': 0.9#优化器参数为0.9
        },
 
        'regularizer': {
            'function': 'L2',
            'factor': 0.000001
        }
    },
 
 
    'LABEL_MAP': [#标签的类别
        "IsolatingSwitch_Open",
        "IsolatingSwitch_Close",
    ]
}

print(CONFIG.get('model_save_dir'))
print(CONFIG.get('LEARNING_RATE').get('params').get('lr'))
print(CONFIG['OPTIMIZER']['params']['momentum'])

楼主想问的是不是如果这个是文件的方式存储成的配置文件吧,假设文件名为model.config,读取的代码如下:

with open('model.config') as f:
    content = f.read()
    exec(content)

然后就可以通过get进行取值或者其他操作

字典的基本格式就是{k:v}
这里的k是键值,只能是不可变数据类型,在字典中具有唯一性,v是可以为任何数据类型的,所以可以嵌套

问题及回答

  • 1、下面的代码里这个config是个什么数据格式?是字典么?

    答:dict格式,也就是字典

  • 2、可以用get函数获取里面的值么?

    答: 可以使用, 比如

test = CONFIG.get('model_save_dir')
print(test)

test = CONFIG['model_save_dir']
print(test)

这两者都可以获取的值一样,前者get格式更好点。

  • 3、这里面有嵌套字典么?

    答:有的,
    简单来说,只要{}包含的就是字典格式,{}里面如果还有 {},那么里面就有嵌套字典,
    比如CONFIG里面的:

'LEARNING_RATE': {#学习率
        'params': {
            'lr': 0.00375  #学习率数值为0.00375           
        }
    },
'OPTIMIZER': {  # 优化器
        'params': {
            'momentum': 0.9  # 优化器参数为0.9
        },

        'regularizer': {
            'function': 'L2',
            'factor': 0.000001
        }
    },
'LABEL_MAP': [  # 标签的类别
        "IsolatingSwitch_Open",
        "IsolatingSwitch_Close",
    ]

这三个都属于字典,字典的大致格式就是 外面大括号{},里面键值对 用 :隔开,前者为键(也就是key),后者为值(也就是value)。

{"a": 123} #  这就是一个字典其中 a为键(也就是key), 123为值(也就是value)。
# 参考 {key: value}

如有问题及时沟通