Как сортировать словарь со значением массива с элементами кортежей по 2 элементу python

Есть такой словарь

a = {'AL-MC': [('18/08/2020', 23), ('19/08/2020', 23), ('20/08/2020', 22), ('21/08/2020', 13), ('22/08/2020', 53), ('24/08/2020', 12)], 'BR-GS': [('18/08/2020', 23), ('19/08/2020', 23), ('20/08/2020', 34), ('21/08/2020', 67), ('22/08/2020', 45), ('24/08/2020', 15)], 'GP-RT': [('18/08/2020', 23), ('19/08/2020', 23), ('20/08/2020', 34), ('21/08/2020', 67), ('22/08/2020', 45), ('24/08/2020', 15)]}

Мне нужно отсортировать его по увеличению второго элемента кортежа т.е с самого маленького значения к самому большому игнорируя дату я пробовал это

b ={k: v for k, v in sorted(a.items(), key=lambda item: item[1][0][1])}

с разными индексами, но не получаю нужного результата. Пожалуйста объясните , где я что упускаю. В сети данных примеров найти не смог(


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

Автор решения: Ildar

проходим по значениям словаря, и каждое значение-список из кортежей сортируем по предикату, сравнивающему вторые элементы кортежей

a = {'AL-MC': [('18/08/2020', 23), ('19/08/2020', 23), ('20/08/2020', 22), ('21/08/2020', 13), ('22/08/2020', 53), ('24/08/2020', 12)], 'BR-GS': [('18/08/2020', 23), ('19/08/2020', 23), ('20/08/2020', 34), ('21/08/2020', 67), ('22/08/2020', 45), ('24/08/2020', 15)], 'GP-RT': [('18/08/2020', 23), ('19/08/2020', 23), ('20/08/2020', 34), ('21/08/2020', 67), ('22/08/2020', 45), ('24/08/2020', 15)]}

for value in a.values():
    value.sort(key=lambda tup: tup[1])

for key, value in a.items():
    print(f'{key}: {value}')

вывод:

AL-MC: [('24/08/2020', 12), ('21/08/2020', 13), ('20/08/2020', 22), ('18/08/2020', 23), ('19/08/2020', 23), ('22/08/2020', 53)]
BR-GS: [('24/08/2020', 15), ('18/08/2020', 23), ('19/08/2020', 23), ('20/08/2020', 34), ('22/08/2020', 45), ('21/08/2020', 67)]
GP-RT: [('24/08/2020', 15), ('18/08/2020', 23), ('19/08/2020', 23), ('20/08/2020', 34), ('22/08/2020', 45), ('21/08/2020', 67)]
→ Ссылка