
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
Уяви структуру даних, яка:
• працює як dict — доступ за ключем
• працює як list — доступ за індексом
• зберігає порядок вставки
• підтримує .index(key) та .key_at(i)
📌 Завдання: Реалізуй клас IndexedDict, який робить усе це.
⚠️ Підводний камінь:
• Просто наслідувати dict не вийде — d[0] буде інтерпретуватися як ключ, а не індекс
• Прийдеться реалізувати подвійну логіку доступу вручну
• Потрібно коректно підтримати __iter__, __getitem__, __len__ та інші.
✅ Рішення:
⠦⠬⠒⣀⠡⠢⠋⣄⢢
⠤⢅⠆⢐ ⢰⠆⡃⡅⠘⢔⡄⢨⠊⡆⠖⠎⡄⠋⠓ ⢁⣂⡊⡨⠣⡢ ⠌⠊⣀⢢⠦⡘⠪⡨⡁⢈⡑⡈⢘⡠
⢊⡂⠜⡤⡤ ⠱⠡⠸⡨⠦⣂⣐⠙⠉⡤⠋⡐⢁⢡⠆⡉⢑⡁⠘⠴⢒⠕⡄⠊⡰⢰⠇⣁
⢒⠊⠡ ⠍⡑⡘⠒⡆⡌⠑⠅⠤⢂⢒⠎⣠⡁⠕
⡆⠅⠊⡢⠸⢤⡅⡠⠙⣀ ⠨ ⢃⡨
⠃⢊⢔⢒⠣⠱⣁⠊⡌⠦ ⠴ ⢉⡈
⢘⡌⡄ ⠊⠬⢊⠲⠸⣐⡃⠣⠉⢑⢢⢒⠣⡌⠸⣁⠜ ⢢⢆⢤⢤⡁
⠙⠃ ⡒⣈⢂⢡⢒⢨⠑⠍⠙⠋⠎⣐⢊⣂⠜ ⢔⡠⢊⡘⡢
⠚⡨⡌⢡⠒⠖⡠⣐ ⡅ ⠤⠥⡤⠘⡨⠌⠙⠘⡉⢁⠱⣄⡊⣠⢅
⠊⢨⡉⢈⡢⢅ ⣠⡉⠩⠘⣈⡅⣠⡄⠉⠌⢑⠪⢆⠙⡤⢔⢠⢑⣁⡃
⢒⢤⡔⢐⠢⡂ ⡄⡈⠩⠓⣐⣄⣠⣄⠌⣄⠲⠌⡑⠊⠡
⣂⠉⠎ ⠍⢃⡡⡘⠊⡌⡨⢢⠃⢡⡁⠢⠑⢘⠋⠸⡤ ⢊⠬⡂⢃ ⠌⡊⢅⠡⡰⢑⡤
⡡⢘ ⠸⠱⡉ ⡰⡄⠢ ⢔⣁ ⠆⢔⢈⡘⠣⠍⠆⢊⠕⡈⠑
⠓⢢⢒⠜⠬⡆⠉⡨⠙⡐⠙⢃⢄⣄⢒⠅⡌⣐⢘⠊⠃⡁
⠇⠨⡌⠰⡒⢨⠸⢢⣐⣂⢅⢌⢡⢃⢤ ⢨ ⠩⢠⡊⠓⠴
⢤⢌⠓ ⢨⠣⠍⡠⣐⢒⠙⢠⠃⠱⣄⡒⢨⠬⠅⢢⣁ ⢂⡁⢄⠅⠑
⡔⣐ ⢘⢈⠎ ⠖⡁ ⡁⢄⠸⠘⡌⢄⠒⠦⠰⢡⣄
⡡⢑⠒⡆⢌⠘⣄⡐⠎⡉⠪⢘⠨⡑⢔⠪⣁⡡⠓⡅⠋⡒
⡊⠥⢐ ⢤⠆⢆⠌⠓⡨⢃⡄⢌⢑⠪⠕⢂⡨⡠
⢡⡢⠘ ⠉⠍⠚⠅⢅⠡⠕⢒⠥⠌⠣⠖⠍⠍⢰
⡉⢤⢐⢌⠢⣐ ⠔⣄⠦⠪⡡⡘⡈⡃⢡⣀⠒⡢⡐⠔⠥⠋
⠩⢐⢐ ⠆⡠⡁⠓⠑⠔⣠⣈⠕⢄⠔⠓⠓⠲
⢘⢢⡐⠆⠔⢄ ⢤⢨⢒⡆⠢⠖⠲⣈⢨⣀⡰⣁⠸⢰⢊
⡌⠪⢂ ⠑⢤⠴⡒⢃⣁⡂⡊⢈⢤⠡ ⢘⡁⠅⡠⠩
⠒⢘⢨⡊⢐⢈ ⣂⠉⡡⣐⠚⠩⠒⣁⡠⡑⢠⢉⢐⠌⡂⠩⠨⠦⢘⢄⢌
⠬⢅⠌ ⠅⢔⢰⢰⣄⡡⡘⠎⡨⠎⠍⡌ ⠋⢰⡃⡅⠸
⢢⠎⢘⠙⠸⢑ ⡅⠬⡡⢘⣀⡄⡌⢘⡈⣄⢁⡉⢨⣂⢈
⢈⠤⡔
📈 Навіщо це потрібно:
• Відмінне тренування з перевизначення магічних методів
• Часто зустрічається у фреймворках (Pandas, SQLAlchemy)
• Тестує знання ABC-класів (collections.abc.MutableMapping)
• Корисно для побудови кастомних структур даних
Хочете версію з __contains__, __reversed__, типізацією та серіалізацією — пишіть 💬
Code Ukraine