我正在通过API连接并提取JSON,但是无法进行解析。
我已经能够解析到以下示例级别。我想从生成的JSON列表中提取“符号”列表,但似乎只能对单个实体执行此操作。如果可能的话,我想直接这样做(即避免只使用循环)。
即,这有效:
data[0]['acct']['positions'][1]['i']['symbol']
返回此:
Out[100]: 'JNC'
但是,这并没有:
data[0]['acct']['positions'][:]['i']['symbol']
data[0]['acct']['positions'][0:3]['i']['symbol']
两者都返回以下错误:
Traceback (most recent call last):
File "<ipython-input-105-72bbee303a08>", line 1, in <module>
data[0]['securitiesAccount']['positions'][:]['instrument']['symbol']
TypeError: list indices must be integers or slices, not str
下面的示例JSON:
[{'a': 0.0,
'b': 1.0,
'i': {'desc': 'CASH_EQUIVALENT', 'id': '9ZZZFD104', 'symbol': 'MMDA1'},
'c': 72.64},
{'a': 0.0,
'b': 33.61716,
'i': {'desc': 'EQUITY', 'id': '78464A417', 'symbol': 'JNC'},
'c': 39.59},
{'a': 0.0,
'b': 87.81473,
'i': {'desc': 'EQUITY', 'id': '921937793', 'symbol': 'BVV'},
'c': 19.34}]
这种索引无法像NumPy中那样工作。您可以改为使用列表推导:
result = [record['i']['symbol'] for record in data[0]['acct']['positions'][0:3]]
显然,更改[0:3]
为任何内容。如果要全部使用,则完全省略该切片。
这是您最初尝试执行的操作:
假设您有一个字典列表,如下所示:
foo = [{'bar': 1}, {'bar': 2}, {'bar': 3}]
如果您想[1, 2, 3]
使用自己的方法进行访问,则类似于foo[:]['bar']
。但是,此表达式是从左到右求值的,foo[:]
只会创建一个的切片foo
,基本上什么也不做。然后,您尝试'bar'
从foo
列表中获取密钥,这将引发错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句