Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何根据特定条件将json的特定部分存储在变量中?_Python_Json_Dictionary - Fatal编程技术网

在Python中,如何根据特定条件将json的特定部分存储在变量中?

在Python中,如何根据特定条件将json的特定部分存储在变量中?,python,json,dictionary,Python,Json,Dictionary,我有一个json,如下所示 result_json = { "status":"Gov info", "user_input":[ { "rule":"Location" }, { "des": "This is for location1", "value": 1 }, { "des": "This is for location2",

我有一个json,如下所示

result_json = {
   "status":"Gov info",
   "user_input":[
      {
         "rule":"Location"
      },
      {
         "des": "This is for location1",
         "value": 1
      },
      {
         "des": "This is for location2",
         "value": 2
      },

      {
         "rule":"District"
      },

      {
         "des": "This is for district1",
         "value": 1
      },
      {
         "des": "This is for district2",
         "value": 2
      },

      {
         "des": "This is for district3",
         "value": 3
      },
      {
         "des": "This is for district4",
         "value": 4
      },

      {
         "rule":"Country"
      },

      {
         "des": "This is for country1",
         "value": 1
      },

      {
         "rule":"Continent"
      },
      {
         "des": "This is for continent1",
         "value": 1
      },
      {
         "des": "This is for continent2",
         "value": 2
      },
   ],
   "source":"Gov",
   "id":"5ass1"
}
filtered_output = {}
for i in lookout:
    temp_json = []
    for j in result_json["user_input"]:
        if j.get("rule") == i:
            temp_json.append(j)
我也有这样的清单

lookup = [u'Location', u'District', u'Country', u'Continent']
现在我想做的是查看列表中的每个值,对照json检查相同的值(该值是根据
规则
键存储的),然后立即获取子json,直到我点击下一个
规则
。比如说

列表查找中的第一个值是
Location
。现在,我循环查看
用户输入的
键的值,对照子键
规则
检查值
位置
是否匹配,然后存储后续字典,直到我点击下一个键
规则
。因此,对于lookup value
Location
,在检查json并收集后续字典之后,我将这样存储

filtered_output = {  
   "Location":[  
      {  
         "des":"This is for location1",
         "value":1
      },
      {  
         "des":"This is for location2",
         "value":2
      }
   ]
}
现在我查找下一个查找值,它是
District
,随后将存储的json部分是

filtered_output = {  
   "Location":[  
      {  
         "des":"This is for location1",
         "value":1
      },
      {  
         "des":"This is for location2",
         "value":2
      }
   ],
   "District":[  
      {  
         "des":"This is for district1",
         "value":1
      },
      {  
         "des":"This is for district2",
         "value":2
      },
      {  
         "des":"This is for district3",
         "value":3
      },
      {  
         "des":"This is for district4",
         "value":4
      }
   ]
}
我试着做下面的事情

result_json = {
   "status":"Gov info",
   "user_input":[
      {
         "rule":"Location"
      },
      {
         "des": "This is for location1",
         "value": 1
      },
      {
         "des": "This is for location2",
         "value": 2
      },

      {
         "rule":"District"
      },

      {
         "des": "This is for district1",
         "value": 1
      },
      {
         "des": "This is for district2",
         "value": 2
      },

      {
         "des": "This is for district3",
         "value": 3
      },
      {
         "des": "This is for district4",
         "value": 4
      },

      {
         "rule":"Country"
      },

      {
         "des": "This is for country1",
         "value": 1
      },

      {
         "rule":"Continent"
      },
      {
         "des": "This is for continent1",
         "value": 1
      },
      {
         "des": "This is for continent2",
         "value": 2
      },
   ],
   "source":"Gov",
   "id":"5ass1"
}
filtered_output = {}
for i in lookout:
    temp_json = []
    for j in result_json["user_input"]:
        if j.get("rule") == i:
            temp_json.append(j)

在这里,它只存储包含键
规则
的字典,但在点击下一个
规则
键之前不会继续。我不知道该怎么做。任何帮助都将不胜感激。

我将首先将您的输入转换为您想要的格式,然后我将只购买筛选键,类似以下内容:

user\u input=result\u json[“user\u input”]
已转换的用户输入={}
对于用户输入中的el:
如果el中的“规则”:
当前规则=el[“规则”]
转换的用户输入[当前规则]=[]
其他:
已转换的用户输入[当前规则].追加(el)
查找=[u'Location',u'District',u'Country',u'Continument']
过滤的_user_input={key:已转换的_user_input[key]用于查找中的键}

这样,您只需处理一次输入(不知道它有多大)。

我会首先将您的输入转换为您想要的格式,然后我只会选择过滤键,类似这样:

user\u input=result\u json[“user\u input”]
已转换的用户输入={}
对于用户输入中的el:
如果el中的“规则”:
当前规则=el[“规则”]
转换的用户输入[当前规则]=[]
其他:
已转换的用户输入[当前规则].追加(el)
查找=[u'Location',u'District',u'Country',u'Continument']
过滤的_user_input={key:已转换的_user_input[key]用于查找中的键}

这样,您只需处理一次输入(不知道它有多大)。

这就是我要找的。谢谢你,伙计!这就是我要找的。谢谢你,伙计!