Как в списке содержащем словари изменить тип данных для определенного ключа
Как в сушествующем словаре найти по ключю "balances" соответствующий ему список, содержащий словари и в этих словарях(по ключу "free") необходимо преобразовать тип данных из str во float ?
{
"makerCommission": 10,
"takerCommission": 10,
"canWithdraw": true,
"updateTime": 1630770217061,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "0.00000000",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "0.00000000",
"locked": "0.00000000"
},
{
"asset": "ETH",
"free": "0.00000000",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
}
'''
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Перебрать словари с списке по ключу balances и сконвертировать значения free через float:
d = {
"makerCommission": 10,
"takerCommission": 10,
"canWithdraw": True,
"updateTime": 1630770217061,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "0.00000000",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "0.00000000",
"locked": "0.00000000"
},
{
"asset": "ETH",
"free": "0.00000000",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
}
for b in d['balances']:
b['free'] = float(b['free'])
print(d)
Автор решения: CrazyElf
→ Ссылка
Это json, а не словарь питона (только из-за true с маленькой буквы), поэтому так, наверное:
import json
d = json.loads('''
{
"makerCommission": 10,
"takerCommission": 10,
"canWithdraw": true,
"updateTime": 1630770217061,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "0.00000000",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "0.00000000",
"locked": "0.00000000"
},
{
"asset": "ETH",
"free": "0.00000000",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
]
}''')
for balance in d['balances']:
balance['free'] = float(balance['free'])
print(json.dumps(d))
Вывод:
{"makerCommission": 10,
"takerCommission": 10,
"canWithdraw": true,
"updateTime": 1630770217061,
"accountType": "SPOT",
"balances": [
{"asset": "BTC", "free": 0.0, "locked": "0.00000000"},
{"asset": "LTC", "free": 0.0, "locked": "0.00000000"},
{"asset": "ETH", "free": 0.0, "locked": "0.00000000"}
],
"permissions": ["SPOT"]
}