Подскажите, как получить цену из списка

Подскажите пожалуйста, как получить цену открытия, закрытия, итд. Не судите строго, только учусь. Биржа MEXC Тикер достать получилось.

import asyncio
import json
import websockets

async def mrlsv_ws():
    url = 'wss://wbs.mexc.com/ws'
    async with websockets.connect(url) as ws:
        print('Connected')
        subs = dict(
            method = 'SUBSCRIPTION',
            params = [
                '[email protected]@BTCUSDT@Min30'
            ]
        )
        await ws.send(json.dumps(subs))
        async for msg in ws:
           
            msg = json.loads(msg)
            symbol = msg.get('s')
            print(symbol)

if __name__ == '__main__':
    asyncio.run(mrlsv_ws())

response:

{
  'd': {
       'e': '[email protected]', 
       'k': {
             't': 1732906800, 
             'o': '97176',
             'c': '97047.99', 
             'h': '97190.48', 
             'l': '96879.53',
             'v': '75.0161855',
             'a': '7276917.78', 
             'T': 1732908600, 
             'i': 'Min30'
             }
        }, 
   'c': '[email protected]@BTCUSDT@Min30',
   't': 1732908001686, 
   's': 'BTCUSDT'
}  

Как получить d->k->o


Ответы (1 шт):

Автор решения: Alexey Trukhanov

Интересный какой курс :)

У Вас вложенные словари. Вам надо несколько раз вызвать метод .get или последовательно обратится к словарям по ключам. Как-то так:

price_open = msg.get("d").get('k').get('o')
price_close = msg.get("d").get('k').get('c')

и так далее, меняете ключ в последнем вызове метода .get и получаете нужную цену.

Или так, через ключи:

price_open = msg['d']['k']['o']
price_close = msg['d']['k']['c']

Вторая запись короче, разница между ними, что если .get не найдет ключ, то вернет None. Во втором же случае, если ключ не найдется - будет исключение.

→ Ссылка