我需要货币汇率更新脚本,但我有以下问题 如果我调用该接口,我会得到以下响应:
"base": "USD",
"rates": {
"AED": 3.672782,
"AFN": 57.680075,
"ALL": 130.5485,
"AMD": 477.866,
"ANG": 1.78952,
"EUR": 0.927815,
"AOA": 107.13525,
...
问题是,我需要以欧元兑换货币汇率。这意味着,我的基本费率是美元,但我需要欧元。
是否可以选择从此JSON计算基本利率为货币汇率的货币汇率与基准汇率EUR的货币汇率。
答案 0 :(得分:1)
如果我误解了你的意图,请原谅我,但我相信你要求美元到欧元的转换功能:
def convert(usd, cur):
rates = {
"AED": 3.672782,
"AFN": 57.680075,
"ALL": 130.5485,
"AMD": 477.866,
"ANG": 1.78952,
"EUR": 0.927815,
"AOA": 107.13525,
}
return usd*rates[cur.upper()]
因此:
convert(5, 'aed')
=> 18.363909999999997
convert(5, 'aoa')
=> 535.67624999999998
convert(5, 'eur')
=> 4.6390750000000001
答案 1 :(得分:1)
给出费率字典,
rates_usd = {"base": "USD", "rates": { "AED": 3.672782, "AFN": 57.680075, "ALL": 130.5485, "AMD": 477.866, "ANG": 1.78952, "EUR": 0.927815, "AOA": 107.13525}}
您可以使用
将这些值转换为新的基本货币def conversion(rates, base="EUR"):
out = {'base': base, 'rates': {}}
scale = rates['rates'][base]
out['rates']['USD'] = 1./scale
for key, val in rates['rates'].items():
out['rates'][key] = val/scale
return out
conversion(rates_usd, 'EUR')
# {'base': 'EUR', 'rates': {'AED': 3.9585283704186724, 'AFN': 62.16764656747305, 'ALL': 140.70531302037583, 'AMD': 515.0444862391748, 'ANG': 1.9287465712453453, 'AOA': 115.47048711219371, 'EUR': 1.0, 'USD': 1.0778010}}
答案 2 :(得分:1)
假设:
rates = {
'AED': 3.672782,
'AFN': 57.680075,
'ALL': 130.5485,
'AMD': 477.866,
'ANG': 1.78952,
'EUR': 0.927815,
'AOA': 107.1352,
'USD': 1.0 } # base in rates needed to convert to/from base
rates
可用于支持任意转化:
def convert_currency(rates, value, src_curr, dest_curr):
return value / rates[src_curr] * rates[dest_curr]
使用中:
>>> convert_currency(3.50, 'ANG', 'EUR')
1.81465001788189
>>> convert_currency(1.00, 'USD', 'EUR')
0.927815
要将rates
更改为新基地,请执行以下操作:
def rates_with_new_base(rates, old_base, new_base):
new_rates = {curr: rate/rates[new_base] for curr, rate in rates.items()}
# only needed if old base was not in rates table
new_rates[old_base] = 1.0 / rates[new_base]
return new_rates
使用中:
>>> rates_with_new_base(rates, 'USD', 'EUR')
{'AED': 3.9585283704186724,
'AFN': 62.16764656747305,
'ALL': 140.70531302037583,
'AMD': 515.0444862391748,
'ANG': 1.9287465712453453,
'AOA': 115.47043322214019,
'EUR': 1.0,
'USD': 1.0778010702564629}