【发布时间】:2019-12-11 10:47:21
【问题描述】:
我得到了一个随机顺序的作者列表。 我需要删除他们姓名前的数字,然后按姓氏字母顺序打印姓名。
我可以按姓氏对它们进行排序,但是当有多个作者时会出现问题,不,我不能写 et al,我不能更改给定作者字符串的任何内容。
比如“J.W.Han,M.Kamber”因为有两位作者,所以无法排序,只需要读取第一个作者的姓氏就可以按字母顺序排序。
这是我目前所拥有的:
authors = ["X. F. Li", "S. H. Lu", "X. A. Wang", "J. W. Han, M. Kamber", "S. Oyama, T. Ishida", "S. Haykin", "V. Vapnik", "A. Ragel, B. Cremilleux", "S. W. Zhu, W. Wong, D. B. Zhang, Y. Xiao, X. J. Chen"]
authors.sort(key=lambda name: name.split(" ")[-1].lower())
print(authors)
【问题讨论】:
-
按
','分割,使用返回的第一项,使用' '分割,使用最后一项...? -
@deceze 你是什么意思?
-
authors.sort(key=lambda name: name.split(',')[0].split(" ")[-1].lower()) -
deceze 的意思是:
name.split(",")[0].split(" ")[-1]- 第一次拆分总是至少有一个元素(没有,的字符串将只返回一个包含原始字符串的列表)。 -
啊,谢谢,简单的数组排序?
标签: python python-3.x sorting lambda