Замените токены из списка списков значением int из словаря

#python #list #dictionary #integer #token

#python #Список #словарь #целое число #токен

Вопрос:

У меня есть список списков, в каждом списке есть только токены.

 grade_lists = [['Very good', 'good', 'okay'], ['sufficient', 'bad', 'very bad']]
 

и этот словарь с key = string , value = int

 month_ids = {     'Very good': 1,
                  'good': 2,
                  'okay': 3,
                  'sufficient': 4,
                  'bad': 5,
                  'very bad': 6
                  }
 

Могу ли я заменить токены из моего списка списков целыми числами из словаря?

 grade_lists = [[1, 2, 3], [4, 5, 6]]
 

Ответ №1:

Вы могли бы сделать это с помощью понимания списка:

 grade_lists = [['Very good', 'good', 'okay'], ['sufficient', 'bad', 'very bad']]
month_ids = {'Very good': 1, 'good': 2, 'okay': 3, 'sufficient': 4, 'bad': 5, 'very bad': 6}
grade_lists2 = [[month_ids[grade] for grade in sublist] for sublist in grade_lists]
print(grade_lists2)
 

Ответ №2:

Вы можете попробовать перебрать каждый список

 temp_list, new_list = [], []

for glist in grade_lists:
    temp_list = []
    for token in glist:
        temp_list.append(month_ids[token])
    new_list.append(temp_list)
 

Вывод:

 >>> new_list
[[1, 2, 3], [4, 5, 6]]
 

Комментарии:

1. Лучше использовать понимание списка, так как использование append изменяет размер списка для каждого добавленного элемента, что неэффективно. Для небольших списков, подобных этому, это не существенно, но в любом случае лучше использовать понимание списка.