Получение значений из списка словарей

Есть вот такой код.

info = client.get_margin_account()
temp = info['userAssets']

Вывод: список словарей.

[{'asset': 'MATIC', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, {'asset': 'YFII', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, {'asset': 'VET', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, {'asset': 'CRV', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, {'asset': 'GRT', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, {'asset': 'USDT', 'free': '60.40787499', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '60.40787499'}, {'asset': 'SUSHI', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, {'asset': 'RVN', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}]

Мне нужно обратиться к элементу вложенного словаря в разделе USDT. Получить данные, что 'asset': 'USDT' и 'free': '60.40787499' Как это сделать? Пытался через цикл for, но не понимаю, как обозначить элемент списка. Обращаться к нему по индексу, напримерinfo['userAssets'][6] не вариант, так как валюта может добавиться и индекс собьется. Подскажите, пожалуйста, в каком направлении двигаться.

Спасибо за подсказки!


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

Автор решения: strawdog
l = [
    {'asset': 'MATIC', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'YFII', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'VET', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'CRV', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'GRT', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'USDT', 'free': '60.40787499', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '60.40787499'}, 
    {'asset': 'SUSHI', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'RVN', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}
]

for x in l:
     if x["asset"] == "USDT":
            print(x["free"])

60.40787499

→ Ссылка
Автор решения: CrazyElf

Вариант с использованием Pandas. Вдруг потом будет нужно ещё какие-то значения дёргать, а через Pandas это бывает удобно:

import pandas as pd

l = [
    {'asset': 'MATIC', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'YFII', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'VET', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'CRV', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'GRT', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'USDT', 'free': '60.40787499', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '60.40787499'}, 
    {'asset': 'SUSHI', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}, 
    {'asset': 'RVN', 'free': '0', 'locked': '0', 'borrowed': '0', 'interest': '0', 'netAsset': '0'}
]

df = pd.DataFrame(l)
print(df.loc[df.asset == "USDT", 'free'].values)

Вывод:

['60.40787499']
→ Ссылка