@Lepilov

Отсортировать список по именам элементов?

Есть список аббревиатур языков (всегда разная последовательность)
l = ['cz', 'fr', 'cn', 'en', 'ru', ............]
как можно упорядочить список таким образом что бы на первом месте всегда был 'en', на втором - 'ru' ? дальнейшая последовательность неважна
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Создать новый список, где en и ru на первых местах, а остальные элементы просто добавить в список?
a = ['en', 'ru']
for x in l:
  if x not in a:
    a.append(x)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Vindicar
Удалить en и ru из списка, если удалось, вставить их в начало вручную? Это вообще-то не сортировка. =)
for lang in ('en', 'ru')[::-1]: #инверсия порядка тут необходима
  try:
    l.remove(lang)
  except ValueError: #нет такого языка в списке
    pass
  else: #был такой язык в списке, вставляем обратно
    l.insert(0, lang)
Ответ написан
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
>>> a
['cz', 'fr', 'cn', 'en', 'ru']
>>> a.remove('en')
>>> a.remove('ru')
>>> b = ['en', 'ru'] + sorted(a)
>>> b
['en', 'ru', 'cn', 'cz', 'fr']
>>>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы