【问题标题】:How to sort names by surname如何按姓氏对姓名进行排序
【发布时间】:2020-11-03 01:59:29
【问题描述】:

我想按姓氏 (a-z) 对以下全名列表进行排序。我们如何使用排序函数和 lambda 来做到这一点?有没有更好的办法?

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

【问题讨论】:

标签: python-3.x list sorting lambda


【解决方案1】:

我想补充其他答案:如果“人员”列表元素可以有尾随空格,我们可以这样删除它们:

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)

这里我们只取姓氏,没有任何尾随空格。

【讨论】:

    【解决方案2】:

    发件人:https://chrisalbon.com/python/basics/sort_a_list_by_last_name/

    你的问题的答案是sorted(people, key=lambda x: x.split(" ")[-1]

    【讨论】:

    • “汤姆·E·罗斯”先生呢?那里有两个空格?
    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2010-10-26
    • 2015-07-08
    • 1970-01-01
    • 2015-05-25
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多