如何在Python中实现类Excel VLOOKUP/XLOOKUP的汇率查询函数
首先你当前的FX_list = ("12/31/2022", 1.0666)是单个日期-汇率的元组,实际处理多组数据时,得把多个这类元组放到一个大列表里,比如:
FX_data = [ ("12/31/2022", 1.0666), ("01/01/2023", 1.0702), ("01/02/2023", 1.0689) ]
下面给你两种实现类似VLOOKUP功能的方法,适配不同场景:
方法1:用字典(推荐,查找效率高)
字典的键值对天生适配“找键返回值”的需求,先把列表转换成字典:
# 转换列表为字典,日期做键,汇率做值 fx_dict = {date: rate for date, rate in FX_data} # 查找逻辑直接用字典的get方法,简单高效 def get_exchange_rate(target_date): # 第二个参数是未找到时的返回内容,可自定义 return fx_dict.get(target_date, "未找到对应日期的汇率")
调用示例:
print(get_exchange_rate("12/31/2022")) # 输出 1.0666 print(get_exchange_rate("01/03/2023")) # 输出 未找到对应日期的汇率
方法2:遍历列表(适合新手理解基础逻辑)
如果想手动实现查找过程,写个循环函数就行:
def lookup_exchange_rate(target_date, fx_list): for date, rate in fx_list: # 严格匹配日期字符串 if date == target_date: return rate # 遍历完没找到就返回None或自定义提示 return None
调用示例:
print(lookup_exchange_rate("01/01/2023", FX_data)) # 输出 1.0702 print(lookup_exchange_rate("01/03/2023", FX_data)) # 输出 None
注意事项
- 日期字符串必须完全匹配,比如列表里是
"12/31/2022",输入"2022-12-31"就找不到。如果有格式不统一的情况,可以用datetime模块统一转换:
from datetime import datetime def standardize_date(date_str): # 把输入的日期字符串转换成统一格式,比如"%Y-%m-%d" return datetime.strptime(date_str, "%m/%d/%Y").strftime("%Y-%m-%d") # 转换所有日期格式后再构建字典 fx_dict_standard = {standardize_date(date): rate for date, rate in FX_data}
内容的提问来源于stack exchange,提问作者Filip Dolezal
相关产品推荐
相关产品推荐

