Alpha Vantage for loop TypeError: string indices must be integers
Alpha Vantage for loop TypeError: string indices must be integers
我一直在尝试让 for each 循环遍历数据并输出特定日期(如 2020-04-03)的键和值。但我不断收到以下错误:TypeError: string indices must be integers
我的代码:
import time
from alpha_vantage.timeseries import TimeSeries
import json
key = 'Your key here'
ts = TimeSeries(key)
ko, meta = ts.get_daily(symbol='KO')
ko_info = json.dumps(ko, indent = 2, sort_keys = True)
data = json.loads(ko_info)
print(data)
print(type(data))
ko_org = json.dumps(data, indent = 2, sort_keys = True)
print(ko_org)
print(type(ko_org))
for x in ko_org['2020-04-01']:
print(x['1. open'])
数据:
{
"2019-11-11": {
"1. open": "52.3300",
"2. high": "52.3700",
"3. low": "51.7750",
"4. close": "51.8400",
"5. volume": "8198125"
},
"2019-11-12": {
"1. open": "51.9100",
"2. high": "51.9100",
"3. low": "51.5831",
"4. close": "51.7100",
"5. volume": "12656881"
},
"2019-11-13": {
"1. open": "52.1800",
"2. high": "52.4500",.....
几件事:
- pythonAlpha Vantage wrapperreturnsjson中的数据,所以不需要做:
ko_info = json.dumps(ko, indent = 2, sort_keys = True)
data = json.loads(ko_info)
print(data)
print(type(data))
ko_org = json.dumps(data, indent = 2, sort_keys = True)
print(ko_org)
print(type(ko_org))
因为它是多余的,所以我们可以废弃所有这些。
- 正如@Psidom 所说,您不能像那样循环遍历 json.dumps 的字符串,但是我们可以循环遍历从常规返回数据中获得的 dict/json,例如:
for x in ko:
if x == '2020-04-01':
print(ko[x])
这表示 "for every date x in all the data returned, if date x is '2020-04-01' print the quote from that date"
我们把它们放在一起得到:
import time
from alpha_vantage.timeseries import TimeSeries
key = 'Your key here'
ts = TimeSeries(key)
ko, meta = ts.get_daily(symbol='KO')
for x in ko:
if x == '2020-04-01':
print(ko[x])
我一直在尝试让 for each 循环遍历数据并输出特定日期(如 2020-04-03)的键和值。但我不断收到以下错误:TypeError: string indices must be integers
我的代码:
import time
from alpha_vantage.timeseries import TimeSeries
import json
key = 'Your key here'
ts = TimeSeries(key)
ko, meta = ts.get_daily(symbol='KO')
ko_info = json.dumps(ko, indent = 2, sort_keys = True)
data = json.loads(ko_info)
print(data)
print(type(data))
ko_org = json.dumps(data, indent = 2, sort_keys = True)
print(ko_org)
print(type(ko_org))
for x in ko_org['2020-04-01']:
print(x['1. open'])
数据:
{
"2019-11-11": {
"1. open": "52.3300",
"2. high": "52.3700",
"3. low": "51.7750",
"4. close": "51.8400",
"5. volume": "8198125"
},
"2019-11-12": {
"1. open": "51.9100",
"2. high": "51.9100",
"3. low": "51.5831",
"4. close": "51.7100",
"5. volume": "12656881"
},
"2019-11-13": {
"1. open": "52.1800",
"2. high": "52.4500",.....
几件事:
- pythonAlpha Vantage wrapperreturnsjson中的数据,所以不需要做:
ko_info = json.dumps(ko, indent = 2, sort_keys = True)
data = json.loads(ko_info)
print(data)
print(type(data))
ko_org = json.dumps(data, indent = 2, sort_keys = True)
print(ko_org)
print(type(ko_org))
因为它是多余的,所以我们可以废弃所有这些。
- 正如@Psidom 所说,您不能像那样循环遍历 json.dumps 的字符串,但是我们可以循环遍历从常规返回数据中获得的 dict/json,例如:
for x in ko:
if x == '2020-04-01':
print(ko[x])
这表示 "for every date x in all the data returned, if date x is '2020-04-01' print the quote from that date"
我们把它们放在一起得到:
import time
from alpha_vantage.timeseries import TimeSeries
key = 'Your key here'
ts = TimeSeries(key)
ko, meta = ts.get_daily(symbol='KO')
for x in ko:
if x == '2020-04-01':
print(ko[x])