货币汇率转换错误的基础货币

时间:2015-03-20 16:14:20

标签: python

我需要货币汇率更新脚本,但我有以下问题 如果我调用该接口,我会得到以下响应:

"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的货币汇率。

3 个答案:

答案 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}