вычесть значение из предыдущего ряда по группе

Создать список namedtuples

Часто бывает очень удобно использовать namedtuple . Например, у вас есть словарь «имя» в качестве ключей и «оценка» в качестве таких значений, как:

d = {'John':5, 'Alex':10, 'Richard': 7}

Вы можете перечислить элементы как кортежи, отсортированные, если хотите, и получить имя и оценку скажем, игрок с наивысшим результатом (index = 0) очень Pythonically:

>>> player = best[0]

>>> player.name
        'Alex'
>>> player.score
         10

Как это сделать:

список в случайном порядке или порядок хранения collections.OrderedDict :

import collections
Player = collections.namedtuple('Player', 'name score')
players = list(Player(*item) for item in d.items())

упорядочен по значению ('оценка'):

import collections
Player = collections.namedtuple('Player', 'score name')

сначала отсортировано с наименьшей оценкой:

worst = sorted(Player(v,k) for (k,v) in d.items())

отсортировано с наивысшим результатом:

best = sorted([Player(v,k) for (k,v) in d.items()], reverse=True)

23
задан Ronak Shah 2 October 2018 в 04:56
поделиться