💻 Примеры

⚡ Кратко: примеры

time.time() помогает измерять длительность, sleep() делает задержку.

collections содержит специализированные структуры данных.

OrderedDict сохраняет порядок и умеет move_to_end().

popitem(last=False) удаляет первый элемент OrderedDict, что удобно для очереди.

Кэш хранит результаты повторных операций, LRU удаляет давно не используемые записи.

@lru_cache кэширует вызовы функции по аргументам.

defaultdict создаёт значение по умолчанию при обращении к отсутствующему ключу.

Counter считает элементы и умеет most_common(), elements(), update(), subtract().

Топ-3 ошибки: использовать sleep() в измерении быстрых операций; забывать, что defaultdict добавляет ключ при чтении; ожидать от Counter вычитания отрицательные значения при операторе -.

Очередь задач через OrderedDict

Высокий приоритет перемещается в начало, низкий - в конец.

from collections import OrderedDict

queue = OrderedDict({
    "task1": "low priority",
    "task2": "medium priority",
    "task3": "low priority",
    "task4": "high priority",
})

for key, value in list(queue.items()):
    if "low" in value:
        queue.move_to_end(key)
    if "high" in value:
        queue.move_to_end(key, last=False)

print(queue)

Частотный анализ слов

Counter заменяет ручной словарь с подсчётом.

from collections import Counter

text = "This is a test. This test is only a test."
words = text.lower().replace(".", "").replace(",", "").split()
word_count = Counter(words)
print(dict(word_count))

Группировка студентов

defaultdict(list) убирает проверку if faculty not in result.

from collections import defaultdict

students = [("Иван", "Физика"), ("Мария", "Математика"), ("Пётр", "Физика")]
result = defaultdict(list)
for name, faculty in students:
    result[faculty].append(name)
print(dict(result))