Что нужно сделать
При работе с API (application programming interface) сайта биржи по криптовалюте вы получили вот такие данные в виде словаря:
data = {
"address": "0x544444444444",
"ETH": {
"balance": 444,
"totalIn": 444,
"totalOut": 4
},
"count_txs": 2,
"tokens": [
{
"fst_token_info": {
"address": "0x44444",
"name": "fdf",
"decimals": 0,
"symbol": "dsfdsf",
"total_supply": "3228562189",
"owner": "0x44444",
"last_updated": 1519022607901,
"issuances_count": 0,
"holders_count": 137528,
"price": False
},
"balance": 5000,
"totalIn": 0,
"total_out": 0
},
{
"sec_token_info": {
"address": "0x44444",
"name": "ggg",
"decimals": "2",
"symbol": "fff",
"total_supply": "250000000000",
"owner": "0x44444",
"last_updated": 1520452201,
"issuances_count": 0,
"holders_count": 20707,
"price": False
},
"balance": 500,
"totalIn": 0,
"total_out": 0
}
]
}
Теперь вам предстоит немного обработать эти данные.
Напишите программу, которая выполняет следующий алгоритм действий:
- Вывести списки ключей и значений словаря.
- В “ETH” добавить ключ “total_diff” со значением 100.
- Внутри “fst_token_info” значение ключа “name” поменять с “fdf” на “doge”.
- Удалить total_out из словарей внутри списка tokens и присвоить сумму этих значений в totalOut внутри ETH.
- Внутри «sec_token_info» изменить название ключа “price” на “total_price”.
После выполнения алгоритма выводить результат (словарь) не нужно.
Что оценивается
- Результат вычислений корректен.
- В коде соблюдается порядок действий алгоритма.
- Не используется других переменных, кроме data.
data = {
"address": "0x544444444444",
"ETH": {
"balance": 444,
"total_in": 444,
"total_out": 4
},
"count_txs": 2,
"tokens": [
{
"fst_token_info": {
"address": "0x44444",
"name": "fdf",
"decimals": 0,
"symbol": "dsfdsf",
"total_supply": "3228562189",
"owner": "0x44444",
"last_updated": 1519022607901,
"issuances_count": 0,
"holders_count": 137528,
"price": False
},
"balance": 5000,
"totalIn": 0,
"total_out": 0
},
{
"sec_token_info": {
"address": "0x44444",
"name": "ggg",
"decimals": "2",
"symbol": "fff",
"total_supply": "250000000000",
"owner": "0x44444",
"last_updated": 1520452201,
"issuances_count": 0,
"holders_count": 20707,
"price": False
},
"balance": 500,
"totalIn": 0,
"total_out": 0
}
]
}
# 1
print('Список ключей и значений словаря "data": ')
for keys, values in data.items():
print(keys, ':', values)
# 2
data['ETH'].update({'total_diff': 100})
# 3
data["tokens"][0]['fst_token_info']['name'] = 'doge'
# 4
count = 0
for i_elem in data["tokens"]:
for j_elem in i_elem:
if j_elem == 'total_out':
data['ETH']['total_out'] += data["tokens"][count][j_elem]
#del data["tokens"][count][j_elem] этот метод удаления
#выдает ошибку, пришлось удалять доп циклом
count += 1
for i in range(len(data["tokens"])):
data["tokens"][i].pop('total_out')
# 5
data["tokens"][1]['sec_token_info']['total_price'] = data["tokens"][1]['sec_token_info']['price']
del data["tokens"][1]['sec_token_info']['price']