如何将嵌套字典的格式更改为字典列表?

发布于 2025-01-17 09:18:23 字数 1066 浏览 2 评论 0原文

我有一个嵌套字典 d1:,

{'2020-12-10': {'EUR': 1.1379,
  'JPY': 128.75,
  'BGN': 1.9558,
  'CZK': 25.845,
  'DKK': 7.4641,
  'GBP': 0.90228},
 '2020-12-09': {'EUR': 1.1354,
  'JPY': 128.31,
  'BGN': 1.9558,
  'CZK': 25.886,
  'DKK': 7.463,
  'GBP': 0.88885},
 '2020-11-08': {'EUR': 1.1409,
  'JPY': 129.04,
  'BGN': 1.9558,
  'CZK': 26.002,
  'DKK': 7.4617,
  'GBP': 0.89108}}

我想将其更改为以下格式:(

d2 = [{'date': '2020-12-10', 'target_currency': 'EUR', 'exchange_rate' : 1.1379},
        {'date': '2020-12-09', 'target_currency': 'EUR', 'exchange_rate' : 1.1354},
         ...
        ]

稍后我需要使用 json.dumps() 在行分隔的 json 文件中进行转换)。

我已尝试将此作为第一步,它将日期作为关键。

d2 = {}
for k, v in d1.items():                     
    key = k
    d2[key] = {"date": k}   
  
    d2[key].update({k_:v_ for k_, v_ in v.items()})
    
d2   

{'2020-12-10': {'date': '2020-12-10',
  'EUR': 1.1379,
  'JPY': 128.75,
  'BGN': 1.9558,
  'CZK': 25.845,
  'DKK': 7.4641,
  'GBP': 0.90228},

需要一些指示如何从这里出发。谢谢。

I have a nested dictionary, d1:

{'2020-12-10': {'EUR': 1.1379,
  'JPY': 128.75,
  'BGN': 1.9558,
  'CZK': 25.845,
  'DKK': 7.4641,
  'GBP': 0.90228},
 '2020-12-09': {'EUR': 1.1354,
  'JPY': 128.31,
  'BGN': 1.9558,
  'CZK': 25.886,
  'DKK': 7.463,
  'GBP': 0.88885},
 '2020-11-08': {'EUR': 1.1409,
  'JPY': 129.04,
  'BGN': 1.9558,
  'CZK': 26.002,
  'DKK': 7.4617,
  'GBP': 0.89108}}

and I want to change it into this format:

d2 = [{'date': '2020-12-10', 'target_currency': 'EUR', 'exchange_rate' : 1.1379},
        {'date': '2020-12-09', 'target_currency': 'EUR', 'exchange_rate' : 1.1354},
         ...
        ]

(which I need to convert later in a line-delimited json file, using json.dumps()).

I have tried this as a first step, which gets the date as a key.

d2 = {}
for k, v in d1.items():                     
    key = k
    d2[key] = {"date": k}   
  
    d2[key].update({k_:v_ for k_, v_ in v.items()})
    
d2   

{'2020-12-10': {'date': '2020-12-10',
  'EUR': 1.1379,
  'JPY': 128.75,
  'BGN': 1.9558,
  'CZK': 25.845,
  'DKK': 7.4641,
  'GBP': 0.90228},

Need some pointers how to go from here. thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

懒猫 2025-01-24 09:18:23

尝试:

dct = {
    "2020-12-10": {
        "EUR": 1.1379,
        "JPY": 128.75,
        "BGN": 1.9558,
        "CZK": 25.845,
        "DKK": 7.4641,
        "GBP": 0.90228,
    },
    "2020-12-09": {
        "EUR": 1.1354,
        "JPY": 128.31,
        "BGN": 1.9558,
        "CZK": 25.886,
        "DKK": 7.463,
        "GBP": 0.88885,
    },
    "2020-11-08": {
        "EUR": 1.1409,
        "JPY": 129.04,
        "BGN": 1.9558,
        "CZK": 26.002,
        "DKK": 7.4617,
        "GBP": 0.89108,
    },
}

d2 = [
    {"date": k1, "target_currency": k2, "exchange_rate": v2}
    for k1, v1 in dct.items()
    for k2, v2 in v1.items()
]

print(d2)

打印:

[
    {"date": "2020-12-10", "target_currency": "EUR", "exchange_rate": 1.1379},
    {"date": "2020-12-10", "target_currency": "JPY", "exchange_rate": 128.75},
    {"date": "2020-12-10", "target_currency": "BGN", "exchange_rate": 1.9558},
    {"date": "2020-12-10", "target_currency": "CZK", "exchange_rate": 25.845},
    {"date": "2020-12-10", "target_currency": "DKK", "exchange_rate": 7.4641},
    {"date": "2020-12-10", "target_currency": "GBP", "exchange_rate": 0.90228},
    {"date": "2020-12-09", "target_currency": "EUR", "exchange_rate": 1.1354},
    {"date": "2020-12-09", "target_currency": "JPY", "exchange_rate": 128.31},
    {"date": "2020-12-09", "target_currency": "BGN", "exchange_rate": 1.9558},
    {"date": "2020-12-09", "target_currency": "CZK", "exchange_rate": 25.886},
    {"date": "2020-12-09", "target_currency": "DKK", "exchange_rate": 7.463},
    {"date": "2020-12-09", "target_currency": "GBP", "exchange_rate": 0.88885},
    {"date": "2020-11-08", "target_currency": "EUR", "exchange_rate": 1.1409},
    {"date": "2020-11-08", "target_currency": "JPY", "exchange_rate": 129.04},
    {"date": "2020-11-08", "target_currency": "BGN", "exchange_rate": 1.9558},
    {"date": "2020-11-08", "target_currency": "CZK", "exchange_rate": 26.002},
    {"date": "2020-11-08", "target_currency": "DKK", "exchange_rate": 7.4617},
    {"date": "2020-11-08", "target_currency": "GBP", "exchange_rate": 0.89108},
]

Try:

dct = {
    "2020-12-10": {
        "EUR": 1.1379,
        "JPY": 128.75,
        "BGN": 1.9558,
        "CZK": 25.845,
        "DKK": 7.4641,
        "GBP": 0.90228,
    },
    "2020-12-09": {
        "EUR": 1.1354,
        "JPY": 128.31,
        "BGN": 1.9558,
        "CZK": 25.886,
        "DKK": 7.463,
        "GBP": 0.88885,
    },
    "2020-11-08": {
        "EUR": 1.1409,
        "JPY": 129.04,
        "BGN": 1.9558,
        "CZK": 26.002,
        "DKK": 7.4617,
        "GBP": 0.89108,
    },
}

d2 = [
    {"date": k1, "target_currency": k2, "exchange_rate": v2}
    for k1, v1 in dct.items()
    for k2, v2 in v1.items()
]

print(d2)

Prints:

[
    {"date": "2020-12-10", "target_currency": "EUR", "exchange_rate": 1.1379},
    {"date": "2020-12-10", "target_currency": "JPY", "exchange_rate": 128.75},
    {"date": "2020-12-10", "target_currency": "BGN", "exchange_rate": 1.9558},
    {"date": "2020-12-10", "target_currency": "CZK", "exchange_rate": 25.845},
    {"date": "2020-12-10", "target_currency": "DKK", "exchange_rate": 7.4641},
    {"date": "2020-12-10", "target_currency": "GBP", "exchange_rate": 0.90228},
    {"date": "2020-12-09", "target_currency": "EUR", "exchange_rate": 1.1354},
    {"date": "2020-12-09", "target_currency": "JPY", "exchange_rate": 128.31},
    {"date": "2020-12-09", "target_currency": "BGN", "exchange_rate": 1.9558},
    {"date": "2020-12-09", "target_currency": "CZK", "exchange_rate": 25.886},
    {"date": "2020-12-09", "target_currency": "DKK", "exchange_rate": 7.463},
    {"date": "2020-12-09", "target_currency": "GBP", "exchange_rate": 0.88885},
    {"date": "2020-11-08", "target_currency": "EUR", "exchange_rate": 1.1409},
    {"date": "2020-11-08", "target_currency": "JPY", "exchange_rate": 129.04},
    {"date": "2020-11-08", "target_currency": "BGN", "exchange_rate": 1.9558},
    {"date": "2020-11-08", "target_currency": "CZK", "exchange_rate": 26.002},
    {"date": "2020-11-08", "target_currency": "DKK", "exchange_rate": 7.4617},
    {"date": "2020-11-08", "target_currency": "GBP", "exchange_rate": 0.89108},
]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文