@pcdesign

Как избавится от пустых массивов внутри списков?

Вот такой список для примера:
a = [[[], [[{'a':1, 'b': 2, 'c': [1, 2, []]}, []]], [1, 2, 3], []]]


Хотелось бы получить, что-то вроде такого на выходе:
[{'a':1, 'b': 2, 'c': [1, 2]}, [1,2.3]]
Откинуть все пустые массивы.
  • Вопрос задан
  • 71 просмотр
Решения вопроса 2
adugin
@adugin Куратор тега Python
Если не production-код, то можно так:
import re
from ast import literal_eval as eval

b = eval(re.sub('\[\][, ]*', '', str(a)))
Ответ написан
Комментировать
простой способ решить в лоб, можно поиграться с тем, что вернуть
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]]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы