Использование рекурсивной функции. Наслаждайтесь!
Код:
example = ['a', ['c', 1, 3], ['f', 7, [4, '4']], [{'lalala': 111}]]
newArray = []
def super_extend(v):
if type(v) is list:
[super_extend(x) for x in v if x is not None]
if type(v) is dict:
{k:super_extend(v) for k,v in v.items() if v is not None}
if type(v) is str or isinstance(v, int) or isinstance(v, float) :
newArray.append(v)
super_extend(example)
print(newArray)
Выход:
['a', 'c', 1, 3, 'f', 7, 4, '4', 111]
[Finished in 0.078s]
В случае, если вы не хотите, чтобы словари оставались словарями, а хотели только значения. Вы можете использовать это. Но если вы хотите сохранить ключи, все, что вам нужно сделать, это использовать:
if type(v) is dict:
{super_extend(v):super_extend(k) for k,v in v.items() if v is not None}
Тогда результат будет:
['a', 'c', 1, 3, 'f', 7, 4, '4', 'lalala', 111]
[Finished in 0.077s]