JSON是一个数组,其中包含单个对象,因此当您阅读JSON时,将获得一个列表,其中包含字典。您可以通过访问列表中的项目0来访问字典,如下所示:
json1_data = json.loads(json1_str)[0]
现在,您可以按预期访问存储在 数据点 中的 数据 :
datapoints = json1_data['datapoints']
我还有一个问题,是否有人可以咬:我正在尝试获取这些数据点(即datapoints [0]
[0])中第一个元素的平均值。只是列出它们,我尝试做datapoints [0:5]
[0],但是我得到的只是两个元素的第一个数据点,而不是想要获取仅包含第一个元素的前5个数据点。有没有办法做到这一点?
datapoints[0:5][0]不符合您的期望。
datapoints[0:5]返回仅包含前5个元素的新列表切片,然后
[0]在其末尾添加将仅从
结果列表切片中
获取第一个元素。您需要使用以获得列表结果的方法:
[p[0] for p in datapoints[0:5]]
这是一种计算均值的简单方法:
sum(p[0] for p in datapoints[0:5])/5. # Result is 35.8
如果您愿意安装NumPy,那么它甚至更容易:
import numpyjson1_file = open('json1')json1_str = json1_file.read()json1_data = json.loads(json1_str)[0]datapoints = numpy.array(json1_data['datapoints'])avg = datapoints[0:5,0].mean()# avg is now 35.8将
,运算符与NumPy数组的切片语法一起使用会产生您最初期望的与列表切片相同的行为。



