Если вы намерены считать только игроков, вы можете просто использовать 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
должен бытьотсортировано для правильной работы