Как отсортировать имена по фамилии - PullRequest
2 голосов
/ 13 июля 2020

Я хотел бы отсортировать приведенный ниже список полных имен по фамилии (az). Как мы могли сделать это с помощью сортированной функции и лямбды? Есть ли способ лучше?

people = ['Fred Johnson', 'Tom E. Roth', 'Jazz Ishingham', 'Fred Kazai', 'Robert Wass', 'You  Mee']

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

Я хотел бы дополнить другие ответы: в случае, когда элементы списка «люди» могут иметь конечные пробелы, мы можем удалить их следующим образом:

sorted(people, key=lambda el: el.rstrip().split(' ')[-1])

Также мы могли бы использовать модуль re таким образом:

import re
sorter = lambda el: re.search(r'(\w+)(?:\s*)$', el).group(1)
sorted(people, key=sorter)

Здесь мы берем только фамилию, без пробелов в конце.

1 голос
/ 13 июля 2020

От: https://chrisalbon.com/python/basics/sort_a_list_by_last_name/

Ответ на вашу проблему: sorted(people, key=lambda x: x.split(" ")[-1]

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