Python字典嵌套循环提取指定日期EUR汇率问题
问题描述
我有一个三层结构的汇率字典,层级为rates -> 日期(date) -> 货币(currency),字典结构示例如下:
"rates": { "2022-11-30": { "AED": 0.06019, "AFN": 1.442036, "ALL": 1.836137, "AMD": 6.464451, "ANG": 0.029525, "AOA": 8.304432, "ARS": 2.741601, ... } }
我想编写循环代码,先把日期捕获到变量中(比如"2022-11-30"),再获取目标货币"EUR"对应的汇率。我尝试了以下代码:
for i in r_dict["rates"]: for y in r_dict["rates"][i]: for e in r_dict["rates"][i][y]: print(e)
现有数据日期范围是2022-11-30至2022-12-06,期望输出格式如下:
| Dates | Currency | Rate |
|---|---|---|
| 2022-11-30 | EUR | 123 |
| 2022-12-01 | EUR | 122 |
| 2022-12-02 | EUR | 123 |
| 2022-12-03 | EUR | 124 |
| 2022-12-04 | EUR | 122 |
| 2022-12-05 | EUR | 121 |
| 2022-12-06 | EUR | 123 |
解决方案
你之前的代码多嵌套了两层不必要的循环:r_dict["rates"][i]本身就是货币与汇率的键值对字典,不需要遍历所有货币,直接通过键"EUR"就能获取对应汇率。
以下是正确的实现代码:
# 打印表头 print("| Dates | Currency | Rate |") print("|-------------|----------|------|") # 遍历所有日期 for date in r_dict["rates"]: # 获取当前日期下EUR的汇率 eur_rate = r_dict["rates"][date]["EUR"] # 按格式输出行内容 print(f"| {date} | EUR | {eur_rate:.3f} |")
代码说明
- 先输出Markdown格式的表头,确保输出符合目标表格样式;
- 遍历
r_dict["rates"]的键(即所有日期); - 直接通过
r_dict["rates"][date]["EUR"]提取目标货币汇率,无需多余循环; - 使用
f-string格式化输出,:.3f控制汇率保留三位小数,可根据需求调整小数位数。
如果数据中存在某日期无EUR汇率的情况,可增加判断避免报错:
print("| Dates | Currency | Rate |") print("|-------------|----------|------|") for date in r_dict["rates"]: if "EUR" in r_dict["rates"][date]: eur_rate = r_dict["rates"][date]["EUR"] print(f"| {date} | EUR | {eur_rate:.3f} |") else: print(f"| {date} | EUR | N/A |")
内容的提问来源于stack exchange,提问作者bombom
相关产品推荐
相关产品推荐

