Группировка записей и подсчет внутри групп - PullRequest
0 голосов
/ 19 июня 2019

У меня есть данные API в формате JSON.

{
    "players": [{
        "player_full_name": "ghny",

        "url": "...",

    }]
}

Мне нужно сгруппировать все записи по подразделениям и получить количество игроков.

    players = json_response.get("players")


    # players = players("event")



    print(division)

1 Ответ

0 голосов
/ 19 июня 2019

Если вы намерены считать только игроков, вы можете просто использовать collections.Counter с выражением генератора.

from collections import Counter

... # process json to get an iterable named 'players'

Counter(player.get('division') for player in players)

Если вам нужно сохранить результаты для дальнейшей обработки,Я бы посоветовал вам либо использовать itertools.groupby, либо смотреть что-то вроде библиотеки toolz, которая предоставляет более дружественный API для groupby.

Если вы планируете придерживаться itertools.groupby, вам нужно будет сделать что-то вроде:

player_division = lambda player: player.get('division') 
g = groupby(sorted(players, key=player_division), player_division)
players_by_division = {division: list(players) for division, players in g}

Примечание : ввод для itertools.groupby должен бытьотсортировано для правильной работы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...