Here is some nested data, that includes lists, tuples, and dictionaries:
data1 = ( 501, (None, 999), None, (None), 504 )
data2 = { 1:601, 2:None, None:603, \
def stripNone(data):
if isinstance(data, dict):
return {k:stripNone(v) for k, v in data.items() if k is not None and v is not None}
elif isinstance(data, list):
return [stripNone(item) for item in data if item is not None]
elif isinstance(data, tuple):
return tuple(stripNone(item) for item in data if item is not None)
elif isinstance(data, set):
return {stripNone(item) for item in data if item is not None}
else:
return data
Sample Runs:
print stripNone(data1)
print stripNone(data2)
print stripNone(data3)
print stripNone(data)
(501, (999,), 504)
{'four': 'sixty', 1: 601}
{12: 402, 14: {'four': 'sixty', 1: 601}}
[[22, (), ()], ((202,), {32: 302, 33: (501, (999,), 504)}, {12: 402, 14: {'four': 'sixty', 1: 601}})]