You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,期望输出格式如下:

DatesCurrencyRate
2022-11-30EUR123
2022-12-01EUR122
2022-12-02EUR123
2022-12-03EUR124
2022-12-04EUR122
2022-12-05EUR121
2022-12-06EUR123
解决方案

你之前的代码多嵌套了两层不必要的循环: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} |")

代码说明

  1. 先输出Markdown格式的表头,确保输出符合目标表格样式;
  2. 遍历r_dict["rates"]的键(即所有日期);
  3. 直接通过r_dict["rates"][date]["EUR"]提取目标货币汇率,无需多余循环;
  4. 使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:05:41