Структура данных - это словарь, каждое значение - это другой словарь, например:
>>> from lib import schedule
>>> schedule = schedule.Schedule()
>>> game = schedule.games[0]
>>> game.home
<lib.schedule.Team instance at 0x9d97c6c>
>>> game.home.lineup
{'guerv001': {'HR': 392, '1B': 1297}, 'kendh001': {'HR': 12, '1B': 201}, 'andeg001': {'HR': 272, '1B': 1572}, 'mattg002': {'HR': 104, '1B': 632}, 'figgc001': {'HR': 26, '1B': 672}, 'iztum001': {'HR': 16, '1B': 253}, 'huntt001': {'HR': 213, '1B': 834}, 'quinr002': {'HR': 23, '1B': 200}, 'napom001': {'HR': 46, '1B': 96}}
Хотел бы, чтобы у команды был метод getTotals (self, category), где, если бы вы вызвали:
game.home.getTotals('HR')
В этом случае метод даст:
1104
По сути, вы можете видеть, что я пытаюсь сделать. Есть идеи?
обновление: У меня есть эта работа с двумя списками, но я бы хотел свести ее к одному:
def getTotals(self, category):
cats = [x for x in self.lineup.values()]
return sum([x[category] for x in cats])
еще одно обновление: На основе inspectorg4dget , полезный отзыв ниже, я получил его. Спасибо!
def getTotals(self, category):
return sum(self.lineup[man][category] for man in self.lineup.keys())
окончательное обновление: Основано на отзывах Nadia , вот другой подход:
def getTotals(self, category):
return sum(value.get(category, 0) for value in self.lineup.values())