在以下情况下,我将如何获得姓氏的人:

l = ['John Fine', 'Doug Biro', 'Jo Ann Alfred']
--> Jo Ann Alfred

到目前为止,我正在做:
sorted(l, key=itemgetter(-1))[0]

是这样做的推荐方法,还是有更好的替代方法?

最佳答案

您实际上是按姓氏而不是名称进行排序,假设空格后的姓氏始终是姓氏,请使用split:

l = ['John Fine', 'Doug Biro', 'Jo Ann Alfred']

sorted(l, key=lambda x: x.rsplit(None,1)[-1])

如果只希望基于姓氏的最小值,请使用min:
print(min(l,key=lambda x: x.rsplit(None,1)[-1]))

反向使用max
lambda x: x.rsplit(None,1)[-1]实际上将字符串拆分为最后一个空格,并使用该值作为排序的键。

关于python - 按姓氏排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29334182/

10-12 17:34