12
Сен
2021

использование filter() несколько раз на одну переменную

Мне требуется отсортировать json объекты по их категориям внутри каждого объекта, а потом удалить пустые списки которые почему то образовываются, но я не могу сделать два этих действия ибо в цикле список не полный и выдает ошибку если фильтровать на удаление пустых списков, а в не списка, когда я вношу в новый список "testmassive" данные - все происходит хорошо, вот только список обретает вид: [[СПИСОК]]

ТО как это сейчас выглядит: введите сюда описание изображения

то как я хочу чтоб это выглядело: [СПИСОК]

то как это выглядит без фильтра на удаление пустых списков: введите сюда описание изображения

testmassive = []
# Открытие вышесозданного файла и чтение информации
with open('products_first_unsorted.json', encoding='utf-8') as products_json_file:
    json_file = json.load(products_json_file)

for index, value in enumerate(prod_ids, start=0):
    category_filtered_list = list(filter(lambda x: x['category'] == value, json_file))
    # testmassive.append(category_filtered_list)

filtered_list = list(filter(None, testmassive))

# Запись сортированных данных в отдельный файл
with open('products_second_unsorted.json', 'w', encoding='utf-8') as products_json_file:
    json.dump(filtered_list, products_json_file, ensure_ascii=False, sort_keys=False)

как это можно реализовать лучше? например определить переменную без типа, чтобы оно еще раз не оборачивалось в list, или же использовать в одной переменной сразу две фильтрации. Я не знаю. Помогите пожалуйста.

Источник: https://ru.stackoverflow.com/questions/1327901/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-filter-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%80%D0%B0%D0%B7-%D0%BD%D0%B0-%D0%BE%D0%B4%D0%BD%D1%83-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E

Тебе может это понравится...

Добавить комментарий