Я пытаюсь создать список с различным количеством групп 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 и т. Д.) В этот расчет.