首页 > 解决方案 > 将 scipy 结果转换为字典的通用方法

问题描述

要将 DescribeResult(nobs=10, minmax=(0, 9), mean=4.5, variance=9.166666666666666, skewness=0.0, kurtosis=-1.2242424242424244) 转换为 adictionary以便可以持久保存到 MongoDB,我计划使用以下方法进行转换:

from scipy import stats
a = np.arange(10)
stats_result = stats.describe(a)
print(stats_result)

stats_dict = {}
stats_dict['nobs'] = stats_result[0]
stats_dict['minmax'] = stats_result[1]
stats_dict['mean'] = stats_result[2]
stats_dict['variance'] = stats_result[3]
stats_dict['skewness'] = stats_result[4]
stats_dict['kurtosis'] = stats_result[5]
print(stats_dict)

打印:

DescribeResult(nobs=10, minmax=(0, 9), mean=4.5, variance=9.166666666666666, skewness=0.0, kurtosis=-1.2242424242424244)

{'nobs': 10, 'minmax': (0, 9), 'mean': 4.5, 'variance': 9.166666666666666, 'skewness': 0.0, 'kurtosis': -1.2242424242424244}

是否有一种更简洁、更惯用的方法将结果转换为字典,而不是根据值索引位置将每个值显式分配给字典?

dict(stats_result)返回错误:

TypeError: cannot convert dictionary update sequence element #0 to a sequence

标签: pythonscipy

解决方案


要从 2 个列表中创建一个 dict,zip它们:

In [3]: dict(zip(['a','b','c'],[1,2,3]))
Out[3]: {'a': 1, 'b': 2, 'c': 3}
In [4]: {k:v for k,v in zip(['a','b','c'],[1,2,3])}
Out[4]: {'a': 1, 'b': 2, 'c': 3}

推荐阅读