Как в списке содержащем словари изменить тип данных для определенного ключа

Как в сушествующем словаре найти по ключю "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"]
}
→ Ссылка