Python 使用不同的重复键读取JSON并打印输出

Python 使用不同的重复键读取JSON并打印输出,python,python-3.x,Python,Python 3.x,我正在学习Python,在阅读使用Python的json时,我遇到了以下问题,我不知道如何处理这种情况。我真的很感谢你的帮助 我使用的是Python3.6,JSON文件格式如下所示 JSON: 我尝试过的代码: python 我想在每个时间序列值下打印键“1.open”的值,例如“2019-07-03 13:05:00”。 我收到的错误是: print([data]['1. open']) TypeError: list indices must be integers or slices,

我正在学习Python,在阅读使用Python的json时,我遇到了以下问题,我不知道如何处理这种情况。我真的很感谢你的帮助

我使用的是Python3.6,JSON文件格式如下所示

JSON: 我尝试过的代码:

python 我想在每个时间序列值下打印键“1.open”的值,例如“2019-07-03 13:05:00”。 我收到的错误是:

 print([data]['1. open'])
TypeError: list indices must be integers or slices, not str

您没有正确引用数据字典。 您应该能够循环使用
“时间序列(5分钟)
键值,如下所示:

for timestamp, values in j1['Time Series (5min)'].items():
    print(timestamp, values['1. open'])


您没有正确引用数据字典。 您应该能够循环使用
“时间序列(5分钟)
键值,如下所示:

for timestamp, values in j1['Time Series (5min)'].items():
    print(timestamp, values['1. open'])


第一个错误来自
数据
周围的括号:
打印(数据['1.open'])

[data]
只创建一个元素的列表,
数据
,而您希望直接访问
数据
字典


此外,您在字典上进行迭代,这将生成键而不是值;尝试使用:
获取j1['Time Series(5min)]中的数据。值():

第一个错误来自
数据周围的括号:
打印(数据['1.open'])

[data]
只创建一个元素的列表,
数据
,而您希望直接访问
数据
字典


此外,您在字典上进行迭代,这将生成键而不是值;尝试使用:
获取j1['时间序列(5min)'中的数据。值():

获取j1['时间序列(5min)'中的数据:
将迭代dict的键(日期),而不是实际数据

[数据]['1.open']
转换为(即在第一次迭代中)转换为
[“2019-07-03 13:05:00”,]['1.open']
,因此您试图通过键(
'1.open'
)访问字符串列表(
[“2019-07-03 13:05:00”,]

迭代dict Python的键和值的方法是使用
dict.items()
api:

import json
with open("d:/Python Projects/myjason3.json") as f:
    j1 = json.load(f)
    for datetime_key, data in j1['Time Series (5min)'].items():
        print(data['1. open'])

对于j1[‘时间序列(5分钟)’中的数据:
将迭代dict的键(日期),而不是实际数据

[数据]['1.open']
转换为(即在第一次迭代中)转换为
[“2019-07-03 13:05:00”,]['1.open']
,因此您试图通过键(
'1.open'
)访问字符串列表(
[“2019-07-03 13:05:00”,]

迭代dict Python的键和值的方法是使用
dict.items()
api:

import json
with open("d:/Python Projects/myjason3.json") as f:
    j1 = json.load(f)
    for datetime_key, data in j1['Time Series (5min)'].items():
        print(data['1. open'])

谢谢你的回复。如果不使用items()方法,还有其他方法吗?
.items()
返回键和相关值,如果愿意,您可以只使用
.keys()
键迭代
时间序列(5分钟)
键。然后,您必须根据需要单独访问这些值。正如@monkut所说,您可以使用python中的´.values()´、´.keys()´或´.items()´(´.iteritems()´)对dict进行迭代。谢谢您的友好回复。有没有其他方法不使用items()方法?
.items(´)
返回键和相关值,如果愿意,您可以仅使用
.keys()
键来迭代
'Time Series(5min)
键。然后,您必须根据需要单独访问这些值。正如@monkut所说,您可以使用´.values()´,´.keys()´或´.items()来迭代dict很好的解释。谢谢你友好的回复。有没有其他方法不使用items()方法?很好的解释。谢谢你友好的回复。有没有其他方法不使用items()方法?谢谢你的回复。现在我明白我做错了什么。有没有其他方法不使用value()或items()吗方法?好吧,你可以在j1['Time Series(5min)]:print(j1['Time Series(5min)][k]['1.open'])中为k做
,但对我来说情况更糟。在字典上迭代可能意味着几件事,使用
value()
方法可以使它显式(比隐式好)。了解。感谢您的帮助和快速回复。感谢您的回复。现在我知道我做错了什么。没有使用values()或items()方法还有其他方法吗?好的,您可以在j1['Time Series(5min)':print(j1['Time Series(5min)][k]['1.open']中为k执行
但对我来说情况更糟。在字典上迭代可能意味着几件事,使用
values()
方法可以使其显式(比隐式更好)。请理解。感谢您的帮助和快速响应。