Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将单个项目列表字典转换为值字典_Python_List_Dictionary - Fatal编程技术网

Python 将单个项目列表字典转换为值字典

Python 将单个项目列表字典转换为值字典,python,list,dictionary,Python,List,Dictionary,当我用 my_trial = trials.trials[n]['misc']['vals'] 我得到了一个由每个元素的列表组成的字典 { 'base_score': [0.5], 'colsample_bylevel': [0.5], 'colsample_bytree': [0.7000000000000001], 'learning_rate': [0.2], 'max_depth': [10.0], 'min_child': [80.0],

当我用

my_trial = trials.trials[n]['misc']['vals'] 
我得到了一个由每个元素的列表组成的字典

{   'base_score': [0.5],
    'colsample_bylevel': [0.5],
    'colsample_bytree': [0.7000000000000001],
    'learning_rate': [0.2],
    'max_depth': [10.0],
    'min_child': [80.0],
    'min_split_loss': [0.8],
    'n_estimators': [500.0],
    'norm': [1],
    'norm_norm': [2],
    'quant_distr': [],
    'scale': [3],
    'scale_pos_w': [3.1],
    'subsample': [0.8]}
然而,为了使用space_eval(space,my_trial),我需要一个字典,其中值是上面列表的元素,而不是列表

事实上,当我用“最佳”检索到最佳试验时,我获得了

{   'base_score': 0.8,
    'colsample_bylevel': 0.8,
    'colsample_bytree': 0.5,
    'learning_rate': 0.5,
    'max_depth': 11.0,
    'min_child': 90.0,
    'min_split_loss': 0.4,
    'n_estimators': 100.0,
    'norm': 1,
    'norm_norm': 2,
    'scale': 3,
    'scale_pos_w': 7.2,
    'subsample': 0.5}
可用于实例化“空间”中的对应点

point = space_eval(space, my_trial)
我想把第一本字典转换成第二本,如果可能的话,用一个简单的直接指令


非常感谢

您可以使用字典理解:

d = {k: v[0] for k, v in d.items() if v}

您可以使用字典理解:

d = {k: v[0] for k, v in d.items() if v}

您可以通过以下方式转换此示例(空列表将转换为
None
):

产出:

{'base_score': 0.5, 'colsample_bylevel': 0.5, 'colsample_bytree': 0.7000000000000001, 'learning_rate': 0.2, 'max_depth': 10.0, 'min_child': 80.0, 'min_split_loss': 0.8, 'n_estimators': 500.0, 'norm': 1, 'norm_norm': 2, 'quant_distr': None, 'scale': 3, 'scale_pos_w': 3.1, 'subsample': 0.8}

您可以通过以下方式转换此示例(空列表将转换为
None
):

产出:

{'base_score': 0.5, 'colsample_bylevel': 0.5, 'colsample_bytree': 0.7000000000000001, 'learning_rate': 0.2, 'max_depth': 10.0, 'min_child': 80.0, 'min_split_loss': 0.8, 'n_estimators': 500.0, 'norm': 1, 'norm_norm': 2, 'quant_distr': None, 'scale': 3, 'scale_pos_w': 3.1, 'subsample': 0.8}