Mam poniżej ciąg 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",
          }
       }
    }
 ],
}

Klucz z powyższego ciągu json otrzymanego przez a.keys () to:

dict_keys(['44', '49', '7'])

Jak odfiltrować a, aby pozostał kluczem 44 i 49 tylko wtedy, gdy podana tablica to ['44', '49'], poniżej jest mój oczekiwany wynik:

{"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",
          }
       }
    }
 ],
}
0
Shi Jie Tio 17 marzec 2020, 08:20

2 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego poniżej:

    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)
1
Abhishek Kulkarni 17 marzec 2020, 05:34

Jeśli dobrze Cię rozumiem, chcesz użyć takiego rozumienia dict:

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)

Wynik:

{
    "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"
                }
            }
        }
    ]
}
1
GordonAitchJay 17 marzec 2020, 05:35