我有一个包含称呼的字符串列表。我如何以 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", “乌斯曼先生”]
非常感谢任何帮助。
请您参考如下方法:
您不应该对操作列表进行排序,您可以指定 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() 用于进行不区分大小写的比较,您的问题示例输出表明了这一点。如果您想要比较大小写敏感,可以将其删除。
