Вопрос по сортировке
Я не понимаю как выстроить логику сортировки в данном задании, при том что нужно чтобы работало на разных значениях ticket_types, user_tickets
Пример:
Input:
ticket_types = ('Ж', 'К', 'З')
user_tickets = ['З', 'К', 'К', 'З', 'З', 'З', 'Ж', 'К', 'Ж']
Output:
['Ж', 'Ж', 'К', 'К', 'К', 'З', 'З', 'З', 'З']
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Например, так. Главное подобрать правильный ключ сортировки:
ticket_types = ('Ж', 'К', 'З')
user_tickets = ['З', 'К', 'К', 'З', 'З', 'З', 'Ж', 'К', 'Ж']
sort_dict = {v:i for i,v in enumerate(ticket_types)}
print(sorted(user_tickets, key=lambda x: sort_dict[x]))
Вывод:
['Ж', 'Ж', 'К', 'К', 'К', 'З', 'З', 'З', 'З']
Можно было бы и не делать словарь для сортировки, но если данных будет много, этот вариант будет работать очень медленно:
print(sorted(user_tickets, key=lambda x: ticket_types.index(x)))
Ещё вариант, через цикл в цикле:
print([i for i in ticket_types for j in user_tickets if i == j])