Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - Code ua
Added 06 Jan 2025

Code ua

@code_ukraine
Number of subscribers: 9
Photos: 1,010
Videos: 358
Links: 1,470
Description:
You can view and join @code_ukraine right away.
Source

Code ua | Хитре завдання на Python для просунутих: словник, який працює як списо...

Telegram community logo - Code Ukraine // Програмування Code ua @code_ukraine
2 009 Views/Reach 2025-07-20 16:13 Message №1732
🖥 Хитре завдання на Python для просунутих: словник, який працює як списокУяви структуру даних, яка: • працює як dict — доступ за ключем • працює як list — доступ за індексом • зберігає порядок вставки • підтримує .index(key) та .key_at(i)📌 Завдання: Реалізуй клас IndexedDict, який робить усе це.⚠️ Підводний камінь:• Просто наслідувати dict не вийде — d[0] буде інтерпретуватися як ключ, а не індекс • Прийдеться реалізувати подвійну логіку доступу вручну • Потрібно коректно підтримати __iter__, __getitem__, __len__ та інші. Рішення: ```pythonfrom collections.abc import MutableMappingclass IndexedDict(MutableMapping): def __init__(self): self._data = {} self._keys = [] def __getitem__(self, key): if isinstance(key, int): real_key = self._keys[key] return self._data[real_key] return self._data[key] def __setitem__(self, key, value): if key not in self._data: self._keys.append(key) self._data[key] = value def __delitem__(self, key): if key in self._data: self._keys.remove(key) del self._data[key] def __iter__(self): return iter(self._keys) def __len__(self): return len(self._data) def index(self, key): return self._keys.index(key) def key_at(self, idx): return self._keys[idx]``` 📈 Навіщо це потрібно:• Відмінне тренування з перевизначення магічних методів • Часто зустрічається у фреймворках (Pandas, SQLAlchemy) • Тестує знання ABC-класів (collections.abc.MutableMapping) • Корисно для побудови кастомних структур данихХочете версію з __contains__, __reversed__, типізацією та серіалізацією — пишіть 💬Code Ukraine