Изменить значение в списке с помощью словаря

Список формата:

dates = ['3/января/2022', '10/февраля/2022', '17/марта/2022']

и словарь с месяцами:

months = {'января': '01', 'февраля': '02', 'марта': '03'}

Чтобы итоговый результат был

['3/01/2022', '10/02/2022', '17/03/2022']

Ответы (3 шт):

Автор решения: Павел

Самое простое - наверное, так:

dates = ['3/января/2022', '10/февраля/2022', '17/марта/2022']

months = {'января': '01', 'февраля': '02', 'марта': '03'}

changed_dates = [date.replace(key, value) 
                 for date in dates 
                 for key, value in months.items() 
                 if key in date]

print(changed_dates)

Вывод:

['3/01/2022', '10/02/2022', '17/03/2022']
→ Ссылка
Автор решения: SergFSM

можно регулярку задействовать:

from re import sub

dates = ['3/января/2022', '10/февраля/2022', '17/марта/2022']
months = {'января': '01', 'февраля': '02', 'марта': '03'}

f = lambda m: months[m[0]]
[sub(r'[а-я]+', f, i) for i in dates]

>>>
['3/01/2022', '10/02/2022', '17/03/2022']
→ Ссылка
Автор решения: Точка Слэш

К строке можно применить метод .translate(),где в качестве параметра будет передан словарь с тем что заменить(ключ) на что(значение)

date = '01.января.2023'
date = date.translate({'января':'01'})
→ Ссылка