Архив рубрики ~Лента новостей~

Прекратите писать запутанные цепочки if-else: разбор JSON с помощью match-case в Python.

Прекратите писать запутанные цепочки if-else: разбор JSON с помощью match-case в Python.

Повысьте эффективность своих скриптов для обработки данных, рассматривая структуры данных как шаблоны, а не просто словари.

Делиться

Изображение, демонстрирующее, как структурированное сопоставление с образцом может улучшить работу операторов if-else.

Введение

Если вы работаете в области анализа данных, инженерии данных или являетесь фронтенд/бэкенд-разработчиком, вы имеете дело с JSON. Для профессионалов это, по сути, только смерть, налоги и парсинг JSON, которые неизбежны. Проблема в том, что парсинг JSON часто представляет собой серьезную головную боль.

Независимо от того, получаете ли вы данные из REST API, анализируете логи или читаете конфигурационные файлы, в конечном итоге вы получаете вложенный словарь, который необходимо расшифровать. И давайте будем честны: код, который мы пишем для обработки этих словарей, зачастую… мягко говоря, некрасивый.

Все мы писали «спагетти-парсер». Вы знаете, о каком я говорю. Он начинается с простого оператора if, но затем нужно проверить, существует ли ключ. Затем нужно проверить, пуст ли список внутри этого ключа. И, наконец, нужно обработать ошибку.

Не успеешь оглянуться, как перед тобой вырастет 40-строчная башня из операторов if-elif-else, которую трудно читать и ещё труднее поддерживать. Конвейеры обработки данных в итоге сломаются из-за каких-нибудь непредвиденных обстоятельств. В общем, плохие предчувствия!

В Python 3.10, вышедшем несколько лет назад, была представлена функция, которую многие специалисты по анализу данных до сих пор не освоили: сопоставление структурных шаблонов с помощью операторов match и case. Её часто ошибочно принимают за простой оператор switch (как в C или Java), но она гораздо мощнее. Она позволяет проверять форму и структуру данных, а не только их значение.

В этой статье мы рассмотрим, как заменить ненадежные проверки словаря элегантными и читаемыми шаблонами, используя операторы match и case. Я сосредоточусь на конкретном примере использования, знакомом многим из нас, вместо того, чтобы пытаться дать исчерпывающий обзор того, как можно работать с match и case.

Источник: towardsdatascience.com

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники Андроид T800 потерял голову в поединке на ринге. В Китае прошел турнир по боям между человекоподобными роботами Новости робототехники Соучредитель Uber привлек $1,7 млрд для нового робототехнического стартапа ATOMS Новости робототехники [Перевод] В Корее произошла первая в мире забастовка против использования гуманоидных роботов на производстве Новости робототехники Украинские беспилотники доставляют роботов непосредственно в зону боевых действий по морю и воздуху. Новости робототехники AMD представила модуль Kria для управления в кратчайшие сроки и унифицированную память для роботов. Архив рубрики ~Коротко из Telegram~ Создатель Twitter Джек Дорси выпустил аналог Discord и Slack —… Новости робототехники Роботакси Tesla движутся в обратном направлении. Архив рубрики ~Обо всем~ Вы умеете читать чужие мысли. Но наука уже 50 лет не может понять как Архив рубрики ~Обо всем~ Ложечка кваркового супа. Об истинных и возможных свойствах кварк-глюонной плазмы Архив рубрики ~Коротко из Telegram~ сегодня в интернетах все ждут подключение GPT-5.6 к cerebras со… Архив рубрики ~Коротко из Telegram~ Учёные нашли математический способ отличать настоящее искусство от изображений,… Архив рубрики ~Коротко из Telegram~ Samsung законтрил будущий iPhone Ultra — корейцы представили аж… Архив рубрики ~Коротко из Telegram~ ИИ-агентам выдали бесконечную память — вышел Obsidian Mind, который создаёт… Архив рубрики ~Коротко из Telegram~ OpenAI обновила свой сборник юзкейсов для Codex — теперь… Новости робототехники Андроид T800 потерял голову в поединке на ринге. В Китае прошел турнир по боям между человекоподобными роботами Новости робототехники Соучредитель Uber привлек $1,7 млрд для нового робототехнического стартапа ATOMS Новости робототехники [Перевод] В Корее произошла первая в мире забастовка против использования гуманоидных роботов на производстве Новости робототехники Украинские беспилотники доставляют роботов непосредственно в зону боевых действий по морю и воздуху. Новости робототехники AMD представила модуль Kria для управления в кратчайшие сроки и унифицированную память для роботов. Архив рубрики ~Коротко из Telegram~ Создатель Twitter Джек Дорси выпустил аналог Discord и Slack —… Новости робототехники Роботакси Tesla движутся в обратном направлении. Архив рубрики ~Обо всем~ Вы умеете читать чужие мысли. Но наука уже 50 лет не может понять как Архив рубрики ~Обо всем~ Ложечка кваркового супа. Об истинных и возможных свойствах кварк-глюонной плазмы Архив рубрики ~Коротко из Telegram~ сегодня в интернетах все ждут подключение GPT-5.6 к cerebras со… Архив рубрики ~Коротко из Telegram~ Учёные нашли математический способ отличать настоящее искусство от изображений,… Архив рубрики ~Коротко из Telegram~ Samsung законтрил будущий iPhone Ultra — корейцы представили аж… Архив рубрики ~Коротко из Telegram~ ИИ-агентам выдали бесконечную память — вышел Obsidian Mind, который создаёт… Архив рубрики ~Коротко из Telegram~ OpenAI обновила свой сборник юзкейсов для Codex — теперь…