Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Code ua
Añadido 06 ene. 2025

Code ua

@code_ukraine
Número de suscriptores: 9
Fotos: 1,010
Videos: 358
Enlaces: 1,470
Descripción:
You can view and join @code_ukraine right away.
Fuente

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

Logotipo de la comunidad de telegram - Code Ukraine // Програмування Code ua @code_ukraine
2 009 Vistas/Alcance 2025-07-20 16:13 Mensaje №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