простой способ решить в лоб, можно поиграться с тем, что вернуть
a = [[[], [[{'a': 1, 'b': 2, 'c': [1, 2, []], 'd':0}, []]], [1, 2, 3], []]]
def clear_data(data):
if isinstance(data, (list, tuple)):
result = []
for value in data:
value = clear_data(value)
if value:
result.append(value)
if len(result) == 1:
return result[0]
return result
elif isinstance(data, dict):
result = {}
for key, value in data.items():
value = clear_data(value)
if value:
result[key] = value
if result:
return result
return data
print(clear_data(a))
[{'a': 1, 'b': 2, 'c': [1, 2]}, [1, 2, 3]]