Индивидуальная сортировка по списку объектов - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть список объектов, таких как

actors = [Person('Raj' ,'Hindi'),
          Person('John',  'English'),
          Person('Michael' 'Marathi'),
          Person('Terry','Hindi'),
          Person('Terry', 'Telugu')]

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

Я использую Python 3.7.Не могли бы вы помочь мне, как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Сначала создайте отображение приоритетов языков:

priority_map = {v: k for k, v in enumerate(('Marathi', 'English', 'Hindi', 'Telugu'))}

Затем используйте sorted с пользовательским ключом:

res = sorted(actors, key=lambda x: priority_map[x.tongue])

В качестве альтернативы, если применимо, сделайте сортировку свойством вашегокласс, как в этот пример .

0 голосов
/ 21 декабря 2018

Вы можете сделать

sorted(actors, key = lambda x: mothertongue_list.index(x.tongue))

Если у нас есть, вы можете получить материнский язык Person на tongue, а mothertongue_list - это список, упорядоченный по вашему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...