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'>
.