如何在Python中过滤json文件的嵌套字典

2024-05-20 22:17:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个JSON文件,其中包含如下数据:

样本数据:(实际数据将具有多年的汇率)

原件:

{
   "rates":{
      "2018-01-22":{
         "BGN":1.9558,
         "TRY":4.6552,
         "CNY":7.8374,
         "NOK":9.6223,
         "NZD":1.6758
      },
      "2018-01-09":{
         "BGN":1.9558,
         "TRY":4.4843,
         "CNY":7.7865,
         "NOK":9.6715,
         "NZD":1.6601
      }
   },
   "start_at":"2018-01-01",
   "base":"EUR",
   "end_at":"2018-02-01"
}

预期:

{
   "rates":{
      "2018-01-22":{
         "BGN":1.9558,
         "CNY":7.8374,
         "NZD":1.6758
      },
      "2018-01-09":{
         "BGN":1.9558,
         "CNY":7.7865,
         "NZD":1.6601
      }
   },
   "start_at":"2018-01-01",
   "base":"EUR",
   "end_at":"2018-02-01"
}

我主要需要以下方面的帮助:

  1. 如何仅选择所需的货币?只喜欢“BGN”、“CNY”和“NZD”。我用的是Pyton

在这方面获得一些建议也会很有帮助:

  1. 过滤掉货币后,我需要在mysql中为这些数据创建两个表,其中一个表包含所有货币和其他历史汇率。一对多关系。从上述dict结构中存储哪个数据库结构是正确的

Tags: 数据base汇率货币eur结构startat
1条回答
网友
1楼 · 发布于 2024-05-20 22:17:48

你可以通过列表/听写理解来解决它。但有不止一种方法可以做到这一点。下面是一个列表/听写理解的示例。在变量选项中,您输入了您想要保留的所有货币:

data = {'rates': {'2018-01-22': {'BGN': 1.9558, 'TRY': 4.6552, 
'CNY': 7.8374, 'NOK': 9.6223, 'NZD': 1.6758}, '2018-01-09': 
{'BGN': 1.9558, 'TRY': 4.4843, 'CNY': 7.7865, 'NOK': 9.6715, 
'NZD': 1.6601}}, 'start_at': '2018-01-01', 'base': 'EUR', 
'end_at': '2018-02-01'}

choice = ("BGN", "CNY", "NZD")

filtered = {date: {x: data.get("rates").get(date).get(x) for x in data.get("rates").get(date) if x in choice} for date in data.get("rates")}

data["rates"] = filtered

print(data)

关于争议裁决委员会: 我可能会选择下面这样的专栏。但这也取决于数据的使用方式

日期|货币1|货币基础

然后,您可以轻松地按日期或货币进行排序和筛选,这很可能是您大部分时间想要的

相关问题 更多 >