排序的元素列表中包含称呼吗?

Mal*_*aiq 1 python

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

我试图在'。'的基础上拆分list的元素。字符并对名称进行排序,但无法使用已排序的名称称呼。

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

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

非常感谢您的帮助。

Wil*_*sem 5

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

sorted_list = sorted(names, key=lambda n: n.split('.', 2)[1].casefold())
Run Code Online (Sandbox Code Playgroud)

这样产生:

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

本.casefold()是用来做一个区分大小写的比较,你的问题样本输出显示。如果需要区分大小写的比较,可以将其删除。