python - 排序列表中的元素包含称呼吗?
问题描述
我有一个包含称呼的字符串列表。如何以 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"]
非常感谢任何帮助。
解决方案
您不应该对操作列表进行排序,您可以指定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()
用于进行不区分大小写的比较,您的问题示例输出表明了这一点。如果您想要区分大小写的比较,您可以删除它。
推荐阅读
- c++ - 为什么我的 for 循环不能正确获取 argv?
- kubernetes - Kubernetes RBAC 限制用户在 Kubernetes 仪表板上仅查看所需资源
- python - Python - 使用 .replace 命令一次替换多个字符
- bash - 在 unix:///var/run/docker.sock 拒绝 Docker 守护进程套接字的权限
- php - 按名称合并/排序数组
- python - 从列表中获取所有不同的组合(Python)?
- three.js - 在 three.js 中创建类似 Shadertoy 的通道,以将程序状态保存在纹理中并在“渲染”着色器中读取它
- sql - SQL选择列上差异最大的行
- python - 使用索引创建新列时自动替换索引
- javascript - 使用 Jquery 获取输入值数组