Как я могу динамически создать словарь из N элементов? - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь создать список с различным количеством групп N (этот номер является параметром для моей функции).

По сути, я хотел бы создать N групп оценок на лету, поэтому, если я укажу, например, N 3, будет создан словарь, содержащий N групп. Вот жестко закодированная версия:

groups = [(1, 1, 1, 1)]
levels_list = []
for group in groups:
    level0 = 0
    scores = [0,1,2,3,4,5,6,7,8]
    level1 = scores[int(max(level0) + 1): int((max(level0) + 1) + group[1])]
    level2 = scores[int(max(level1) + 1): int((max(level1) + 1) + group[2])]
    level3 = scores[int(max(level2) + 1): int((max(level2) + 1) + group[3])]
    levels = {'nothing': level0, 'one_thing': level1, 'several_things': level2, 'loads_of_things': level3}
    levels_list.append(levels)

Я предполагаю, что псевдокод, где N - это параметр "self.params.n_groups", будет выглядеть примерно так:

levels_dict = {}
for group in groups:
    levels = [0] # initialize a list with the first level as 0
    scores = [0,1,2,3,4,5,6,7,8]
    level = self.create_levels(levels, group, scores)
    levels_dict[level] = level

def create_levels(self, levels, group, scores):
     for n in range(self.params.n_groups):
         # how to write this part?
​         level = grades[int(max(levels[i]) + 1): int((max(levels[i]) + 1) + group[i+1])]
    return level

У меня возникли проблемы с функцией create_levels, в частности вызывая уровень {n} (если я применяю к нему форматирование, он не распознается как существующая переменная, а является строкой). Мне нужно динамически вставить предыдущую переменную уровня (level0, level1, level2 и т. Д.) В этот расчет.

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