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

2024-06-16 10:00:30 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个列表,我想继续添加行,并按姓氏的字母顺序对它们进行排序,这怎么可能做到呢? 排序似乎只是按字符串的第一个字母重新排列它们。

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

Tags: 字符串add列表排序顺序example字母line
3条回答
linesList.sort(key=lambda s: s.split()[1])

更多信息:https://wiki.python.org/moin/HowTo/Sorting#Key_Functions

假设名称的格式为FirstName<whitespace>LastName,则可以使用sorted^{}参数:

>>> lst = ['Bob D', 'Bob A', 'Bob C', 'Bob B']
>>> lst = sorted(lst, key=lambda x: x.split()[1])
>>> lst
['Bob A', 'Bob B', 'Bob C', 'Bob D']
>>>

同样的原则也适用于list.sort

>>> lst = ['Bob D', 'Bob A', 'Bob C', 'Bob B']
>>> lst.sort(key=lambda x: x.split()[1])
>>> lst
['Bob A', 'Bob B', 'Bob C', 'Bob D']
>>>

另外,如果您需要它们,这里有一个关于^{}的引用和一个关于^{}的引用。

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

lst.sort()

然后按姓氏排序:

lst.sort(key=lambda n: n.split()[1])

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

您还可以使用sorted一次完成这一切:

linesList = sorted(sorted(linesList), key=lambda n: n.split()[1])

相关问题 更多 >