Source
Code ua | Хитре завдання на Python для просунутих: словник, який працює як списо...
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