Получение значений из списка словарей
Есть вот такой код.
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']