Skip to content

MatchList Stats

MatchList.get_average_stat() lets you compute the average of any Participant stat across a set of matches using a lambda.

import asyncio
import os

from nexar.cache import DEFAULT_CACHE_CONFIG
from nexar.client import NexarClient
from nexar.enums import Region

client = NexarClient(
    riot_api_key=os.getenv("RIOT_API_KEY", ""),
    cache_config=DEFAULT_CACHE_CONFIG,
)


async def main() -> None:
    async with client:
        player = await client.get_player(riot_id="bexli#bex", region=Region.NA1)
        matches = await player.get_matches(count=20)

        # Average any stat across matches with a lambda
        avg_kda = matches.get_average_stat(lambda p: (p.kills + p.assists) / max(p.deaths, 1))
        print(f"Avg KDA: {avg_kda:.2f}")

        avg_cs = matches.get_average_stat(lambda p: p.creep_score)
        print(f"Avg CS:  {avg_cs:.1f}")

        avg_vision = matches.get_average_stat(lambda p: p.vision_score)
        print(f"Avg Vision Score: {avg_vision:.1f}")

        avg_gold_per_min = matches.get_average_stat(lambda p: p.challenges.gold_per_minute)
        print(f"Avg Gold/min: {avg_gold_per_min:.1f}")


if __name__ == "__main__":
    asyncio.run(main())