python 如何从嵌套的dict_values对象中提取值

bq8i3lrv  于 2023-02-15  发布在  Python
关注(0)|答案(3)|浏览(150)

我有一个dict_values对象,当我读它的时候:

Info = mydata.values()

我把它显示出来,它显示如下:

dict_values([{'loc': -1392.9605288965874, 'scale': 652.5001331690878}])

我的目标是生成一个numpy数组来提取dict_values对象中的值,因此:

array([-1392.9605288965874, 652.5001331690878])

问题是我仍然不能"分离"文本信息,例如,参数的描述("loc"和"scale")。
我该怎么做呢?

mf98qq94

mf98qq941#

您可以使用两次.values()并在不定义内部dict键名的情况下获取数组:

out = np.array([x for y in mydata.values() for x in y.values()])
zhte4eai

zhte4eai2#

要得到valuesmydata本身必须是一条法令,类似于:

In [46]: d={'foobar':{'loc': -1392.9605288965874, 'scale': 652.5001331690878}}
In [47]: d
Out[47]: {'foobar': {'loc': -1392.9605288965874, 'scale': 652.5001331690878}}

那么它的值:

In [48]: d.values()
Out[48]: dict_values([{'loc': -1392.9605288965874, 'scale': 652.5001331690878}])

将其展开为列表,然后选择一个项目:

In [49]: list(d.values())
Out[49]: [{'loc': -1392.9605288965874, 'scale': 652.5001331690878}]
In [50]: list(d.values())[0]
Out[50]: {'loc': -1392.9605288965874, 'scale': 652.5001331690878}

这是一个法令,所以我们可以再次得到值:

In [51]: list(d.values())[0].values()
Out[51]: dict_values([-1392.9605288965874, 652.5001331690878])

并从派生列表生成一个数组:

In [53]: np.array(list(list(d.values())[0].values()))
Out[53]: array([-1392.9605289 ,   652.50013317])

在外部字典中只有一个元素的情况下,通过键而不是值来选择它可能更简单:

In [54]: d['foobar']
Out[54]: {'loc': -1392.9605288965874, 'scale': 652.5001331690878}

像这样的嵌套结构的主要挑战是跟踪每一层的内容。

js5cn81o

js5cn81o3#

这个有用吗?

values_dict = list(Info)[0]
values_list = [v for k, v in values_dict.items()]
numpy_array = np.array(values_list)

print(numpy_array)

相关问题