###### 问题遇到的现象和发生背景
不知道如何对多列表中的固定位置数据进行求和
问题相关代码如下
headers = {Accept application/json Content-Type application/json}
url = /spot/candlesticks
query_param = currency_pair=BTC_USDT&interval=1h&limit=30 #K线图的请求参数,interval间隔1小时,限制30条数据
r = requests.request(GET, host + prefix + url + "?" + query_param,headers=headers)
prin t(r.js0n())
运行结果及报错内容如下
[[1640264400 1992449.39401513435 48620 48854 48592 48622.66] [1640268000 2077963.480610466294 48601 48696 48468 48620] [1640271600 1632344.138842265967 48813 48836 48582 48599] 其余27组省略
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果
我想要求和每组数据的第3个数值,例如 48620 48601 48813 以及往后的27个数值
很简单,用for循环。
注意:列表索引从0开始!
import requests
host = "https://api.gateio.ws"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/candlesticks'
query_param = 'currency_pair=BTC_USDT&interval=1h&limit=30'
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
s = 0
for i in r.json():
s += int(float(i[2])) # 可处理小数
print(s)
>>> s = '[[1640264400 1992449.39401513435 48620 48854 48592 48622.66] [1640268000 2077963.480610466294 48601 48696 48468 48620] [1640271600 1632344.138842265967 48813 48836 48582 48599]]'
>>> s = s[2:-2] #去掉[[和]]
>>> lst = s.split('] [') #分割成列表
>>> lst
['1640264400 1992449.39401513435 48620 48854 48592 48622.66', '1640268000 2077963.480610466294 48601 48696 48468 48620', '1640271600 1632344.138842265967 48813 48836 48582 48599']
>>> for i,ls in enumerate(lst):
lst[i] = ls.split()
>>> lst
[['1640264400', '1992449.39401513435', '48620', '48854', '48592', '48622.66'], ['1640268000', '2077963.480610466294', '48601', '48696', '48468', '48620'], ['1640271600', '1632344.138842265967', '48813', '48836', '48582', '48599']]
>>> Sum = 0
>>> for i in lst:
Sum += int(i[2])
>>> Sum
146034
>>> 48620+48601+48813
146034
>>>
30组也能出答案,只要格式一致换掉s即可
result = sum(map(lambda x:float(x[2]) , r.json()))
print(result)