首页 > 解决方案 > 如何在 Python 中的 dict 中找到值数组的平均值?

问题描述

我有一个这样的字典项目:

{'XYZ': [30.34, 27.46, 28.49, 22.35, 24.73, 33.96, 31.18, 30.0, 40.17, 38.22, 33.76, 21.28, 24.63, 27.47, 22.85, 20.45, 6.5, 0.56, 0.97, -7.64, 12.73, 10.69, 9.43, -32.22, -35.82, 16.92, 11.77, 4.16, 28.79, 19.65, 36.54, 34.31, 49.43, 37.18, 32.89, 22.99]}

我有 2 个问题;

一个。我想检查您在上面看到的值数组中的前 5 个值是否都大于 11。如果是,我希望将 XYZ 添加到新的字典中。

湾。我想检查您在上面看到的值数组中的前 5 个值的平均值是否高于 11。如果是,我想将 XYZ 和平均值添加为字典。

在每种情况下,如果值不可用或为负数,我应该忽略它。

你能指导我完成这个吗?由于我的 dict 的值是一个数组,我不知道处理这个问题的有效方法。

谢谢!

标签: pythonarraysdictionary

解决方案


试试这样:

d={'XYZ': [30.34, 27.46, 28.49, 22.35, 24.73, 33.96, 31.18, 30.0, 40.17, 38.22, 33.76, 21.28, 24.63, 27.47, 22.85, 20.45, 6.5, 0.56, 0.97, -7.64, 12.73, 10.69, 9.43, -32.22, -35.82, 16.92, 11.77, 4.16, 28.79, 19.65, 36.54, 34.31, 49.43, 37.18, 32.89, 22.99]}
new_dict = {}
if all(x>11 for x in d['XYZ'][:5]):
  new_dict['XYZ'] = d['XYZ']
elif [sum(d['XYZ'][:5])/5 for x in d['XYZ'][:5]][0]>11:
  new_dict['XYZ'] = sum(d['XYZ'][:5])/5

print(new_dict)

在线尝试!

可以进行列表切片,获取前 n 个元素,然后all()使用生成器表达式检查第一个条件sum()/5以获得平均值


推荐阅读