I have the following nested dictionary in json example:
{
  "DICT": {
    "List of dict": [
      { #first dict inside the outer list
        "K1": "V1",
        "K2": "V2",
        "K3": "V3",
        "K4": [
          {
            "K4_1_1": "V4_1"
          },
          {
            "K4_2_1": "V4_2"
          },
          {
            "K4_3_1": null
          }
        ],
        "K5 is a list of Dict": [
          {
            "K5_1_1": "V5_1",
            "K5_1_2": "V5_2",
            "K5_1_3": "V5_3",
            "K5_1_4": "V5_4"
          },
          {
            "K5_2_1": "V5_1",
            "K5_2_2": "V5_2",
            "K5_2_3": "V5_3",
            "K5_2_4": "V5_4"
          }
        ]
      },
      { #second dict in the outerlist
        "K1": "V1",
        "K2": "V2",
        "K3": "V3",
        "K4": [
          {
            "K4_1_1": "V4_1_1"
          },
          {
            "K4_2_1": "V4_2_1"
          }
        ],
        "K5": {
          "K5_1_1": "V_1_1",
          "K5_1_2": "V_1_2",
          "K5_1_3": null,
          "K5_1_4": null
        }
      }
    ]
  }
}
Note that, K4 and K5 are always list of dict. I need to get rid of all null no matter how deep they are inside the dictionary or inside a list. So I wrote the following python function, however the output is the same and all None values are still there:
def RemoveNones(Dict):
    for k, v in Dict.items():
        if type(v) == collections.OrderedDict:
            RemoveNones(v)
        elif type(v) == list:
            for i in v:
                RemoveNones(i)
        else:
            Dict = dict((K,V) for K,V in Dict.items() if V!=None)
my dictionaries inside are not dict but <class 'collections.OrderedDict'>.
 
    