Отсортировать список по заданному шаблону
Есть список:
countries = ['Другие страны', 'Казахстан', 'Международные', 'Россия', 'Таджикистан', 'Узбекистан']
countries может прийти по-разному, т.е. внутри может быть только одна страна или несколько. Порядок тоже может быть произвольным.
Мне нужно его отсортировать, чтобы получилось так:
countries = ['Казахстан', 'Россия', 'Таджикистан', 'Узбекистан', 'Другие страны', 'Международные']
Пример: Получил такой список:
countries = ['Казахстан', 'Международные', 'Узбекистан', 'Таджикистан']
нужно отсортировать, чтобы получилось так:
countries = ['Казахстан', 'Таджикистан', 'Узбекистан', 'Международные']
Надеюсь, смог объяснить. Думал присвоить id каждой стране и сортировать по ним, но не знаю как.
Ответы (2 шт):
Автор решения: timur
→ Ссылка
def country_sort(country):
country_ids = {
'Казахстан': 1,
'Россия': 2,
'Таджикистан': 3,
'Узбекистан': 4,
'Международные': 6
}
return country_ids[country] if country in country_ids.keys() else len(country_ids)
countries = ['Казахстан', 'Международные', 'Узбекистан', 'Таджикистан']
countries.sort(key=country_sort)
print(countries)
# ['Казахстан', 'Таджикистан', 'Узбекистан', 'Международные']
Автор решения: CrazyElf
→ Ссылка
Если все элементы списка точно известны, то всё вообще просто:
countries_order = ['Казахстан', 'Россия', 'Таджикистан', 'Узбекистан', 'Другие страны', 'Международные']
countries = ['Казахстан', 'Международные', 'Узбекистан', 'Таджикистан']
countries.sort(key=lambda x: countries_order.index(x))
print(countries)
['Казахстан', 'Таджикистан', 'Узбекистан', 'Международные']