guides

Pagination and Filtering

Efficient in-memory pagination, sorting, and filter logic.

Published May 30, 2026

In-Memory Pagination

def paginate(items: list, page: int, size: int) -> list:
    start = (page - 1) * size
    end = start + size
    return items[start:end]

Cursor-Based Pagination

def paginate_cursor(items: list, cursor: int, size: int) -> tuple[list, int]:
    idx = next((i for i, item in enumerate(items) if item['id'] > cursor), len(items))
    page = items[idx:idx + size]
    next_cursor = page[-1]['id'] if page else None
    return page, next_cursor

Multi-Column Sort

def multi_sort(items: list[dict], keys: list[str]) -> list[dict]:
    return sorted(items, key=lambda x: tuple(x[k] for k in keys))