首页 > 解决方案 > 排序列表中的元素包含称呼吗?

问题描述

我有一个包含称呼的字符串列表。如何以 Pythonic 方式根据姓名(在称呼之后 - 先生,女士,夫人)对列表进行排序?

我试图在'。'的基础上拆分列表的元素。字符并对名称进行排序,但无法获得排序名称的称呼。

names = ["Mr.usman", "Mrs.obama", "Mr.Albert"]
sorted_list = sorted([i.split('.')[1] for i in names])

例如["Mr.usman", "Mrs.obama", "Mr.Albert"]应该像["Mr.Albert", "Mrs.obama", "Mr.usman"]

非常感谢任何帮助。

标签: python

解决方案


您不应该对操作列表进行排序,您可以指定key=...参数来确定要排序的内容,例如:

sorted_list = sorted(names, key=lambda n: n.split('.', 2)[1].casefold())

这产生:

>>> sorted(names, key=lambda n: n.split('.', 2)[1].casefold())
['Mr.Albert', 'Mrs.obama', 'Mr.usman']

.casefold()用于进行不区分大小写的比较,您的问题示例输出表明了这一点。如果您想要区分大小写的比较,您可以删除它。


推荐阅读