如何按字符串中的第二个单词按字母顺序对列表进行排序

use*_*274 4 python sorting list

如果我有一个列表,我想继续添加行,并按姓氏的字母顺序排序,怎么办呢?排序似乎只是通过字符串的第一个字母重新排列它们.

    line = "James Edward"   #Example line
    linesList.append("".join(line))   #Add it to a list
    linesList = sorted(linesList)   #Sort alphabetically
Run Code Online (Sandbox Code Playgroud)

Mar*_*eed 5

如果您想要完全正确的字母顺序(当姓氏相同时按名字排序),您可以利用 Python 排序稳定这一事实。如果您首先按默认键排序:

lst.sort()
Run Code Online (Sandbox Code Playgroud)

然后按姓氏排序:

lst.sort(key=lambda n: n.split()[1])
Run Code Online (Sandbox Code Playgroud)

那么具有相同姓氏的条目将以与第一个sort放入它们的顺序相同的顺序结束- 这将是正确的。

您也可以使用以下命令一次性完成所有操作sorted

linesList = sorted(sorted(linesList), key=lambda n: n.split()[1])
Run Code Online (Sandbox Code Playgroud)