← Назад к списку

collections

Автор: Pans

Обучение Создано: 07 April 2026, 18:24 | Изменено: 07 April 2026, 18:25

Базовые функции библиотеки collections и примеры использования

from collections import Counter, defaultdict, deque


def try_counter(item):
    c = Counter(item)
    return dict(c)


def try_defaultdict(item):
    d = defaultdict(list)
    for i, j in item:
        d[i].append(j)
    return dict(d)


def try_deque(item):
    d = deque(item)
    while d:
        print(d.popleft())


if __name__ == '__main__':
    data = "apple orange apple banana apple orange"
    print(try_counter(data.split()))

    data = [
        ("fruit", "apple"),
        ("fruit", "banana"),
        ("vegetable", "carrot"),
        ("fruit", "orange"),
    ]
    print(try_defaultdict(data))

    data = ["task1", "task2", "task3"]
    try_deque(data)

    logs = [
        ("user1", "login"),
        ("user2", "login"),
        ("user1", "logout"),
        ("user2", "logout"),
        ("user1", "login"),
    ]

    data = try_defaultdict(logs)
    for user in data:
        print(f'{user} today make {try_counter(data[user])}')

Результат

{'apple': 3, 'orange': 2, 'banana': 1}
{'fruit': ['apple', 'banana', 'orange'], 'vegetable': ['carrot']}
task1
task2
task3
user1 today make {'login': 2, 'logout': 1}
user2 today make {'login': 1, 'logout': 1}
Скачать

Комментарии (1)

Автор комментария: Pans 07 April 2026, 18:25

У deque есть параметр maxlen= позволяющий оставить список заданного размера

from collections import deque
from numpy import mean


if __name__ == '__main__':
    data = [10, 20, 30, 40, 50, 60]

    d = deque(maxlen=3)
    for i in data:
        d.append(i)
        print(f'{i} -> Avg {mean(d)}')

результат

10 -> Avg 10.0
20 -> Avg 15.0
30 -> Avg 20.0
40 -> Avg 30.0
50 -> Avg 40.0
60 -> Avg 50.0


Вы оставите комментарий как Anonymous/Deleted User Войти