Мониторинг переводов между счетами python + dict + разные валюты
Есть 4 словаря-счета на бирже. С парами валюта - кво:
спот = {'dol': 10.0, 'eur': 22.0, 'lir': 34.0, 'cny': 45.0}
маржа = {'dol': 1.2, 'eur': 1.8, 'lir': 35.3, 'cny': 4.2}
крос = {'dol': 12.5, 'eur': 25.0, 'lir': 23.9, 'cny': 43.4}
фьюч = {'dol': 13.3, 'eur': 25.2, 'lir': 36.1, 'cny': 38.8}
Есть код который показывает из какого счета в какой был произведен перевод:
import copy
p_dict = {'spot': {'dol': 10.0, 'eur': 22.0, 'lir': 34.0, 'cny': 45.0},
'marja': {'dol': 1.2, 'eur': 1.8, 'lir': 35.3, 'cny': 4.2},
'cross': {'dol': 12.5, 'eur': 25.0, 'lir': 23.9, 'cny': 43.4},
'future': {'dol': 13.3, 'eur': 25.2, 'lir': 36.1, 'cny': 38.8}}
n_dict = copy.deepcopy(p_dict)
n_dict['spot']['dol'] -= 1
n_dict['cross']['dol'] += 1
oper = None
for k1, v1 in n_dict.items():
for k2, v2 in v1.items():
v3 = p_dict[k1][k2]
if v2 != v3:
if oper is not None and abs(v2 - v3) == abs(oper[0]):
print(f'Произошел перевод между счетами `{k1}` и `{oper[1]}`, валюта `{k2}` на {abs(oper[0])} ед.')
else:
oper = v3 - v2, k1
Нужно сделать так чтобы работало даже при разных валютах на счетах, к примеру если в словаре cross
находиться dol
а остальные валюты другие (проверил выдает KeyError).
Буду рад помощи
Источник: Stack Overflow на русском