如何使用python根据数组形式给出的键过滤json字符串?
我有以下json字符串:如何使用python根据数组形式给出的键过滤json字符串?,json,django,python-3.x,Json,Django,Python 3.x,我有以下json字符串: a={"44":[ { "16":{ "unitData":[ ], "unitHeader":{ "t9u":"P3P34", "sum":"807", } } }, { "16":{ "unitData":[ ],
a={"44":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"8A",
}
}
}
],
"49":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"17":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"8A",
}
}
}
],
"7":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"6":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"0A",
}
}
}
],
}
上面由a.keys()获取的json字符串中的键是:
如何过滤a,使其仅在给定的数组为['44',49']时保持为44和49的键,下面是我的预期输出:
{"44":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"8A",
}
}
}
],
"49":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"17":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"8A",
}
}
}
],
}
请尝试以下操作:
a={"44":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"8A",
}
}
}
],
"49":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"17":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"8A",
}
}
}
],
"7":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"6":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"0A",
}
}
}
],
}
given_array = ['44', '49']
for i in list(a.keys()):
if i not in given_array:
a.pop(i)
print(a)
请尝试以下操作:
a={"44":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"8A",
}
}
}
],
"49":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"17":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"8A",
}
}
}
],
"7":[
{
"16":{
"unitData":[
],
"unitHeader":{
"t9u":"P3P34",
"sum":"807",
}
}
},
{
"6":{
"unitData":[
],
"unitHeader":{
"t9u":"BFB",
"sum":"0A",
}
}
}
],
}
given_array = ['44', '49']
for i in list(a.keys()):
if i not in given_array:
a.pop(i)
print(a)
如果我理解正确,您希望使用如下理解:
import json
filtered_json = {key: value for key, value in a.items() if key in ('44', '49')}
json_str = json.dumps(filtered_json , indent=4)
print(json_str)
输出:
{
"44": [
{
"16": {
"unitData": [],
"unitHeader": {
"t9u": "P3P34",
"sum": "807"
}
}
},
{
"16": {
"unitData": [],
"unitHeader": {
"t9u": "BFB",
"sum": "8A"
}
}
}
],
"49": [
{
"16": {
"unitData": [],
"unitHeader": {
"t9u": "P3P34",
"sum": "807"
}
}
},
{
"17": {
"unitData": [],
"unitHeader": {
"t9u": "BFB",
"sum": "8A"
}
}
}
]
}
如果我理解正确,您希望使用如下理解:
import json
filtered_json = {key: value for key, value in a.items() if key in ('44', '49')}
json_str = json.dumps(filtered_json , indent=4)
print(json_str)
输出:
{
"44": [
{
"16": {
"unitData": [],
"unitHeader": {
"t9u": "P3P34",
"sum": "807"
}
}
},
{
"16": {
"unitData": [],
"unitHeader": {
"t9u": "BFB",
"sum": "8A"
}
}
}
],
"49": [
{
"16": {
"unitData": [],
"unitHeader": {
"t9u": "P3P34",
"sum": "807"
}
}
},
{
"17": {
"unitData": [],
"unitHeader": {
"t9u": "BFB",
"sum": "8A"
}
}
}
]
}
您可以使用dela[“7”]
或a.pop(“7”,无)
您可以使用dela[“7”]
或a.pop(“7”,无)