嵌套字典方法的字典理解

时间:2019-08-03 21:28:56

标签: list dictionary list-comprehension dictionary-comprehension

我想从中提取一些JSON数据,并为天气键中的天气值创建一个嵌套字典

{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 0.597837,
    "hits" : [
      {
        "_index" : "myindex",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 0.597837,
        "_source" : {
          "appName" : "MidApp",
          "appVer" : "1.0",
          "reviews" : {
            "reviewer" : {
              "value" : "Bob"
            },
            "testsPass" : [
              {
                "name" : "unit",
                "pass" : true
              },
              {
                "name" : "integraton",
                "pass" : true
              },
              {
                "name" : "ui",
                "pass" : true
              }
            ]
          }
        }
      }
    ]
  }
}

鉴于“温度:34 F,湿度:51%,风:55 mph”,我试图找到一种使用字典理解的方法来将json输入到该python对象中并被卡住

1 个答案:

答案 0 :(得分:0)

您必须在","上拆分字符串以分隔字段:

>>> s = "Temp: 34 F, Humidity: 51%, Wind: 55 mph"
>>> s.split(",")
['Temp: 34 F', ' Humidity: 51%', ' Wind: 55 mph']

然后,拆分": "上的每个元素以获取键和值:

>>> [k_v.split(": ") for k_v in s.split(",")]
[['Temp', '34 F'], [' Humidity', '51%'], [' Wind', '55 mph']]

现在,您可以根据以下内容建立字典:

>>> dict(k_v.split(": ") for k_v in s.split(","))
{'Temp': '34 F', ' Humidity': '51%', ' Wind': '55 mph'}

或者具有dict理解:

>>> {k: v for k_v in s.split(",") for k, v in [k_v.split(": ")]}
{'Temp': '34 F', ' Humidity': '51%', ' Wind': '55 mph'}