2024-08-01 12:00:01
🖥 Хитре завдання на Python для просунутих: словник, який працює як список

Уяви структуру даних, яка:
• працює як dict — доступ за ключем
• працює як list — доступ за індексом
• зберігає порядок вставки
• підтримує .index(key) та .key_at(i)

📌 Завдання: Реалізуй клас IndexedDict, який робить усе це.

⚠️ Підводний камінь:
• Просто наслідувати dict не вийде — d[0] буде інтерпретуватися як ключ, а не індекс
• Прийдеться реалізувати подвійну логіку доступу вручну
• Потрібно коректно підтримати __iter__, __getitem__, __len__ та інші.

✅ Рішення:
⠦⠬⠒⣀⠡⠢⠋⣄⢢
⠤⢅⠆⢐ ⢰⠆⡃⡅⠘⢔⡄⢨⠊⡆⠖⠎⡄⠋⠓ ⢁⣂⡊⡨⠣⡢ ⠌⠊⣀⢢⠦⡘⠪⡨⡁⢈⡑⡈⢘⡠

⢊⡂⠜⡤⡤ ⠱⠡⠸⡨⠦⣂⣐⠙⠉⡤⠋⡐⢁⢡⠆⡉⢑⡁⠘⠴⢒⠕⡄⠊⡰⢰⠇⣁
⢒⠊⠡ ⠍⡑⡘⠒⡆⡌⠑⠅⠤⢂⢒⠎⣠⡁⠕
⡆⠅⠊⡢⠸⢤⡅⡠⠙⣀ ⠨ ⢃⡨
⠃⢊⢔⢒⠣⠱⣁⠊⡌⠦ ⠴ ⢉⡈

⢘⡌⡄ ⠊⠬⢊⠲⠸⣐⡃⠣⠉⢑⢢⢒⠣⡌⠸⣁⠜ ⢢⢆⢤⢤⡁
⠙⠃ ⡒⣈⢂⢡⢒⢨⠑⠍⠙⠋⠎⣐⢊⣂⠜ ⢔⡠⢊⡘⡢
⠚⡨⡌⢡⠒⠖⡠⣐ ⡅ ⠤⠥⡤⠘⡨⠌⠙⠘⡉⢁⠱⣄⡊⣠⢅
⠊⢨⡉⢈⡢⢅ ⣠⡉⠩⠘⣈⡅⣠⡄⠉⠌⢑⠪⢆⠙⡤⢔⢠⢑⣁⡃
⢒⢤⡔⢐⠢⡂ ⡄⡈⠩⠓⣐⣄⣠⣄⠌⣄⠲⠌⡑⠊⠡

⣂⠉⠎ ⠍⢃⡡⡘⠊⡌⡨⢢⠃⢡⡁⠢⠑⢘⠋⠸⡤ ⢊⠬⡂⢃ ⠌⡊⢅⠡⡰⢑⡤
⡡⢘ ⠸⠱⡉ ⡰⡄⠢ ⢔⣁ ⠆⢔⢈⡘⠣⠍⠆⢊⠕⡈⠑
⠓⢢⢒⠜⠬⡆⠉⡨⠙⡐⠙⢃⢄⣄⢒⠅⡌⣐⢘⠊⠃⡁
⠇⠨⡌⠰⡒⢨⠸⢢⣐⣂⢅⢌⢡⢃⢤ ⢨ ⠩⢠⡊⠓⠴

⢤⢌⠓ ⢨⠣⠍⡠⣐⢒⠙⢠⠃⠱⣄⡒⢨⠬⠅⢢⣁ ⢂⡁⢄⠅⠑
⡔⣐ ⢘⢈⠎ ⠖⡁ ⡁⢄⠸⠘⡌⢄⠒⠦⠰⢡⣄
⡡⢑⠒⡆⢌⠘⣄⡐⠎⡉⠪⢘⠨⡑⢔⠪⣁⡡⠓⡅⠋⡒
⡊⠥⢐ ⢤⠆⢆⠌⠓⡨⢃⡄⢌⢑⠪⠕⢂⡨⡠

⢡⡢⠘ ⠉⠍⠚⠅⢅⠡⠕⢒⠥⠌⠣⠖⠍⠍⢰
⡉⢤⢐⢌⠢⣐ ⠔⣄⠦⠪⡡⡘⡈⡃⢡⣀⠒⡢⡐⠔⠥⠋

⠩⢐⢐ ⠆⡠⡁⠓⠑⠔⣠⣈⠕⢄⠔⠓⠓⠲
⢘⢢⡐⠆⠔⢄ ⢤⢨⢒⡆⠢⠖⠲⣈⢨⣀⡰⣁⠸⢰⢊

⡌⠪⢂ ⠑⢤⠴⡒⢃⣁⡂⡊⢈⢤⠡ ⢘⡁⠅⡠⠩
⠒⢘⢨⡊⢐⢈ ⣂⠉⡡⣐⠚⠩⠒⣁⡠⡑⢠⢉⢐⠌⡂⠩⠨⠦⢘⢄⢌

⠬⢅⠌ ⠅⢔⢰⢰⣄⡡⡘⠎⡨⠎⠍⡌ ⠋⢰⡃⡅⠸
⢢⠎⢘⠙⠸⢑ ⡅⠬⡡⢘⣀⡄⡌⢘⡈⣄⢁⡉⢨⣂⢈
⢈⠤⡔

📈 Навіщо це потрібно:
• Відмінне тренування з перевизначення магічних методів
• Часто зустрічається у фреймворках (Pandas, SQLAlchemy)
• Тестує знання ABC-класів (collections.abc.MutableMapping)
• Корисно для побудови кастомних структур даних

Хочете версію з __contains__, __reversed__, типізацією та серіалізацією — пишіть 💬

Code Ukraine
Читати в Telegram