如何在现有Rate类基础上调用CBR汇率接口实现获取最高汇率货币名称功能
实现方案
你可以在原有Rate类中新增一个专门获取最高汇率货币名称的方法,逻辑如下:
- 调用已有的
exchange_rates()方法获取全部货币的汇率数据 - 用
max()函数对所有货币的Value字段做比较,筛选出汇率最高的货币对象 - 返回该对象的
Name字段值
新增方法代码
def get_max_rate_currency(self): # 获取所有货币汇率字典 all_valute = self.exchange_rates() # 按Value字段找最大值对应的货币信息 max_rate_item = max(all_valute.values(), key=lambda item: item["Value"]) return max_rate_item["Name"]
修改后完整可运行代码
import requests class Rate: def __init__(self, format_='value'): self.format = format_ def exchange_rates(self): self.r = requests.get('https://www.cbr-xml-daily.ru/daily_json.js') return self.r.json()['Valute'] def make_format(self, currency): response = self.exchange_rates() if currency in response: if self.format == 'full': return response[currency] if self.format == 'value': return response[currency]['Value'] return 'Error' def eur(self): return self.make_format('EUR') def usd(self): return self.make_format('USD') def brl(self): return self.make_format('BRL') # 新增的最高汇率货币名称获取方法 def get_max_rate_currency(self): all_valute = self.exchange_rates() max_rate_item = max(all_valute.values(), key=lambda item: item["Value"]) return max_rate_item["Name"] # 调用示例 if __name__ == "__main__": r = Rate(format_='value') print(r.brl()) # 14.1581 print(r.eur()) # 88.1397 # 获取最高汇率货币名称 print(r.get_max_rate_currency())
扩展说明
如果需要同时返回最高汇率的数值,可以修改方法的返回值:
def get_max_rate_currency(self): all_valute = self.exchange_rates() max_rate_item = max(all_valute.values(), key=lambda item: item["Value"]) # 同时返回名称和汇率值 return max_rate_item["Name"], max_rate_item["Value"]
内容的提问来源于stack exchange,提问作者This_guy
相关产品推荐
相关产品推荐

