【问题标题】:Create dictionary key and value pair from nested JSON values从嵌套的 JSON 值创建字典键和值对
【发布时间】:2021-08-04 21:21:23
【问题描述】:

我正在尝试通过遍历天气 JSON 文件来创建字典。

我希望键是日期,值是 JSON 中嵌套“小时”中的温度。

combined_temperature_hour = {日期,温度}

当我遍历 JSON 文件时,我可以获得单个项目,但我不知道如何获取这两个值并将它们放在一个(键,值)对中。

combined_temperature_hour = {}

for d in days:
    for hours in d["hours"]:
        hourly = hours.get('datetimeEpoch')
        dia_y_hora = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(hourly))
        complete_date.append(dia_y_hora)

        h_temp = hours.get('temp')
        hourly_temperature.append(h_temp)

        #combined
        combined = {complete_date, hourly_temperature}
        print(combined)

JSON

"days":[
      {
         "datetime":"2021-01-01",
         "datetimeEpoch":1609484400,
         "tempmax":36.9,
         "tempmin":32.4,
         "temp":34.7,
         "hours":[
            {
               "datetime":"00:00:00",
               "datetimeEpoch":1609484400,
               "temp":32.9,
            },
            {
               "datetime":"01:00:00",
               "datetimeEpoch":1609488000,
               "temp":33.2,
            },
            {
               "datetime":"02:00:00",
               "datetimeEpoch":1609491600,
               "temp":33.2,
            }
         ]
      }

这就是我希望字典在循环后的样子


combined_temperature_hour = {`2021-01-24 05:00:00`: '25.1', `2021-01-24 06:00:00`: '26.2'}

我尝试获取温度和小时的列表,并在循环后将它们组合到字典中,但我注意到我缺少值并且它们可能是不正确的对。

【问题讨论】:

  • 您确定要以温度为关键吗?如果有多次相同的温度怎么办?
  • 时间成为关键会更有意义。
  • 这是一个很好的观点。我没有想过重复的温度。我应该让日期成为关键。我将更新我的问题以扭转这一点。谢谢@Barmar
  • 这是一个基本的字典操作:combined_temperature_hour[dia_y_hora] = h_temp

标签: python json loops


【解决方案1】:

首先将您的 json 作为字典读取到变量 a (我更改了您 json 中一些不匹配的括号)

a = {"days":[
      {
         "datetime":"2021-01-01",
         "datetimeEpoch":1609484400,
         "tempmax":36.9,
         "tempmin":32.4,
         "temp":34.7,
         "hours":[
            {
               "datetime":"00:00:00",
               "datetimeEpoch":1609484400,
               "temp":32.9,
            },
            {
               "datetime":"01:00:00",
               "datetimeEpoch":1609488000,
               "temp":33.2,
            },
            {
               "datetime":"02:00:00",
               "datetimeEpoch":1609491600,
               "temp":33.2,
            }
         ]
       }
    ]
}

然后您可以从以下代码中获得预期的输出:

combined_temperature_hour = {}
for date in a['days']:
  for hour in date['hours']:
    combined_temperature_hour[date['datetime']+' '+hour['datetime']] = hour['temp']

【讨论】:

  • 这行得通,谢谢,但我必须稍微修改一下代码才能为我工作。 combine_temperature_hour[dia_y_hora] = 小时['temp']
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多