在Python中,如何根据特定条件将json的特定部分存储在变量中?
我有一个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",
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 valueLocation
,在检查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]用于查找中的键}
这样,您只需处理一次输入(不知道它有多大)。这就是我要找的。谢谢你,伙计!这就是我要找的。谢谢你,伙计!