JustCaptain kod-buduschego
253504b541f7f2df21287b4928c87fb803c0792f
Перейти к файлу
Код
task_3.py
"""

Задача 3. Отфильтровать дорогие запросы

def expensive_requests(requests, limit):
pass

Вернуть только запросы, где токенов больше 3000.

Входные данные


"""

from dataclasses import dataclass
from typing import Any, Type, TypeVar

T = TypeVar("T")


@dataclass
class Request:
    id: int
    tokens: int


requests_raw = [
    {"id": 1, "tokens": 1200},
    {"id": 2, "tokens": 4500},
    {"id": 3, "tokens": 800},
    {"id": 4, "tokens": 6700},
    {"id": 5, "tokens": 2100},
    {"id": 6, "tokens": 9100},
    {"id": 7, "tokens": 3300},
    {"id": 8, "tokens": 2900},
    {"id": 9, "tokens": 5000},
    {"id": 10, "tokens": 1500},
]


def create_objects(data: list[Any], cls: Type[T]) -> list[T]:
    result: list[T] = []
    for item in data:
        result.append(cls(**item))
    return result


requests: list[Request] = create_objects(data=requests_raw, cls=Request)


def expensive_requests(requests: list[Request], limit: int) -> list[Request]:
    result: list[Request] = []
    for request in requests:
        if request.tokens > limit:
            result.append(request)
    return result


print(expensive_requests(requests=requests, limit=3000))