如何使用python根据数组形式给出的键过滤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":[ ],

我有以下json字符串:

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”,无)