Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача пайтон .

Poul Lirman Ученик (152), на голосовании 1 месяц назад
Есть бесконечный поток данных. Вы знаете, когда он закончится, и объём данных может превышать доступную оперативную память в разы. В этом потоке случайным образом распределены JSON-объекты, но не просто объекты, а с вложенными структурами произвольной глубины. Структура каждого объекта может отличаться. Задача – написать генератор на Python, который принимает этот поток данных на вход и выдаёт на выходе новый поток, где каждый JSON-объект нормализован. Нормализация – это преобразование вложенных структур в плоский словарь, используя dot-notation для ключей. Например, {"a": {"b": 1, "c": {"d": 2}}} превращается в {"a.b": 1, "a.c.d": 2}. При этом, нужно учитывать возможность появления одинаковых ключей на разных уровнях вложенности после нормализации, например, {"a": 1, "b": {"a": 2}}. В этом случае, нужно добавить индекс в квадратных скобках к повторяющимся ключам, начиная с 1: {"a": 1, "b.a": 2}. Если {"a": 1, "b": {"a": 2}, "c": {"b": {"a": 3}}}, то результат должен быть {"a": 1, "b.a": 2, "c.b.a": 3}.

Но это ещё не всё. Предположим, в потоке встречаются объекты с одинаковой нормализованной структурой. Нужно определить схему (т.е. все уникальные ключи после нормализации) для наиболее часто встречающейся структуры и выдавать на выходе только те объекты, которые соответствуют этой схеме, игнорируя остальные. При этом, решение должно быть максимально эффективным по памяти и скорости обработки, так как поток бесконечный, и ты не можешь хранить все данные в памяти. Нужно реализовать, используя генераторы и возможности Python для работы с JSON и динамической типизацией.
Голосование за лучший ответ
HUAWEI Russia Оракул (54607) 2 месяца назад
Питон, а не Пейтон
Poul LirmanУченик (152) 2 месяца назад
сможешь решить?
Poul Lirman, а что, прикольно. Затянет на целый проект. И где весь этот поток брать, самим выдумывать? Это ещё один проект.
Похожие вопросы