首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从JSON文件读取数据- TypeError:列表索引必须是整数或片,而不是str

尝试从JSON文件读取数据- TypeError:列表索引必须是整数或片,而不是str
EN

Stack Overflow用户
提问于 2020-10-08 17:12:53
回答 2查看 111关注 0票数 0

我试图为我在课堂上进行的一个项目读取我的一些FitBit数据。该文件是一个JSON,我以前从未使用过它。我试着用Python来阅读它,但是我总是会被抛出错误。

我能够将数据转换成python字典,但我很难分离出我想要的值。我正在尝试选择'bpm‘之后的所有值,这样我就可以用它们构建一个数组。

我收到的输出是:

代码语言:javascript
复制
========== RESTART: C:\Users\Addy\Physical Activity\JSON Import.py ==========
Traceback (most recent call last):
  File "C:\Users\Addy\Physical Activity\JSON Import.py", line 13, in <module>
    for i in data['values']:
TypeError: list indices must be integers or slices, not str

我理解我为什么要得到它,我也看到了其他的例子,人们用整数值来搜索条目,但我认为这对我没有什么帮助。

以下是我到目前为止所掌握的数据,以及我试图阅读的数据:

代码语言:javascript
复制
import json 
  
# Opening JSON file 
f = open('/Users/Addy/Physical Activity/heart_rate-2020-10-06.json',)
  
# returns JSON object as  
# a dictionary

data = json.loads(f.read()) 
  
# Iterating through the json 
# list 
for i in data['values']: 
    print(i)

f.close() 
  
print(data) 
代码语言:javascript
复制
 [{'dateTime': '10/06/20 20:05:01', 'value': {'bpm': 69, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:11', 'value': {'bpm': 68, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:21', 'value': {'bpm': 70, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:26', 'value': {'bpm': 71, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:31', 'value': {'bpm': 72, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:46', 'value': {'bpm': 73, 'confidence': 1}}, {'dateTime': '10/06/20 20:06:01', 'value': {'bpm': 76, 'confidence': 1}}, {'dateTime': '10/06/20 20:06:06', 'value': {'bpm': 75, 'confidence': 1}}, {'dateTime': '10/06/20 20:06:16', 'value': {'bpm': 72, 'confidence': 1}}] 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-08 17:43:04

数据是list of dicts,然后键value的值又是dict,您想要键bpm的值。

代码语言:javascript
复制
import json 

with open('/Users/Addy/Physical Activity/heart_rate-2020-10-06.json') as f:
    data = json.load(f) 

bpm = [item['value']['bpm'] for item in data]
print(bpm)
票数 1
EN

Stack Overflow用户

发布于 2020-10-08 17:23:17

data是一个列表,而不是字典,所以您可以只使用

代码语言:javascript
复制
for i in data: 
    print(i)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64267500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档