在以下情况下,我将如何获得姓氏的人:
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/