Есть священный обряд, который каждый программист должен пройти хотя бы раз в жизни: написать абсолютно нечитаемый, но работающий однострочник со сложной логикой внутри. Не потому что надо, а потому что можешь.
Чел с реддит захотел распарсить рецепты из ванильного Minecraft и вот, что получилось:
out2in = {k: ([("#" + x["tag"] if x.get("tag") else x["item"]) if x.class.name == "dict" else [("#" + y["tag"] if y.get("tag") else y["item"]) for y in x] for x in v]) for (k, v) in {(y["result"]["item"] if y["result"].class.name == "dict" else y["result"]): ((y["ingredients"] if y["ingredients"].class.name == "list" else ([y["ingredients"]]) if y.get("ingredients") else y["ingredient"]) if y.get("ingredients") else [z for z in y["key"].values()]) for y in filter(lambda x: x.get("result") and (x.get("ingredients") or x.get("key")), [json.load(open(x, "rt")) for x in Path("recipes").glob("*.json")])}.items()}Что мы здесь видим? Дзен Питона, который вышел покурить и не вернулся. В одном флаконе смешаны:
- Вложенные дикт-компрехеншены
- Вложенные лист-компрехеншены
- Тернарные операторы в качестве основной логики
- filter с lambda-функцией
- И все это для парсинга JSON разной структуры.
Автор честно признался: "this took ages to debug..." (на отладку ушла вечность). И сделал он это, цитирую: "just because i can(and am bored)" (просто потому что могу (и мне было скучно)).
Произведение искусства, которое должно висеть в рамке с подписью "НИКОГДА ТАК НЕ ДЕЛАЙТЕ".
#код_курильщика
Комментарии
0Комментариев пока нет.
Войдите, чтобы участвовать в обсуждении.