获取嵌套字典列表中相同字典键的平均值

时间:2020-07-31 09:24:44

标签: python json dictionary

我有1000个这样的嵌套字典列表。这是一个嵌套字典列表的示例,其他列表具有相同的键:

[{'key1': {'key1': array([[1.]]),
   'key2': array([[1.]]),
   'key3': array([[1.]]),
   'key4': array([[0.85722112]])}},
 {'key2': {'key1': array([[1.]]),
   'key2': array([[1.]]),
   'key3': array([[1.]]),
   'key4': array([[0.85722112]])}},
 {'key3': {'key1': array([[1.]]),
   'key2': array([[1.]]),
   'key3': array([[1.]]),
   'key4': array([[0.85722112]])}},
 {'key4': {'key1': array([[0.85722112]]),
   'key2': array([[0.85722112]]),
   'key3': array([[0.85722112]]),
   'key4': array([[1.]])}}]

我花了一些时间进行研究,但仍然没有找到是否有一种方法可以基于同一个键来计算所有嵌套dict列表中的平均值而无需强行使用。 json库中有一些命令吗?

1 个答案:

答案 0 :(得分:0)

这是一种实现方法:

t = pd.json_normalize([list(x.values())[0] for x in l])

此时,t的值为:

             key1            key2            key3            key4
0         [[1.0]]         [[1.0]]         [[1.0]]  [[0.85722112]]
1         [[1.0]]         [[1.0]]         [[1.0]]  [[0.85722112]]
2         [[1.0]]         [[1.0]]         [[1.0]]  [[0.85722112]]
3  [[0.85722112]]  [[0.85722112]]  [[0.85722112]]         [[1.0]]

现在,做:

t = t.applymap(lambda x: x[0][0])
t.mean()

输出为:

key1    0.964305
key2    0.964305
key3    0.964305
key4    0.892916
dtype: float64