在python中,如何对字符串比较位置发生变化的字符串列表进行排序?

Jim*_*Jim 4 python sorting

我有一个字符串列表,有2个破折号分隔文本,如:

Wednesday-Morning-Go bowling
Sunday-Really late at night-Sleep
July-Noon-BBQ
Run Code Online (Sandbox Code Playgroud)

我想通过字符串的最后一部分 - 第二个破折号依次在python中按字母顺序对列表进行排序.有没有办法在python中执行此操作?例如,这是我希望列表在排序后的样子.

July-Noon-BBQ
Wednesday-Morning-Go bowling
Sunday-Really late at night-Sleep
Run Code Online (Sandbox Code Playgroud)

(我使用的是Python 2.6.)

Sve*_*ach 8

您可以使用该key属性list.sort():

a = ["Wednesday-Morning-Go bowling", "Sunday-Really late at night-Sleep",
     "July-Noon-BBQ"]
a.sort(key=lambda x: x.split("-", 2)[-1])
print a
Run Code Online (Sandbox Code Playgroud)

版画

['July-Noon-BBQ', 'Wednesday-Morning-Go bowling', 'Sunday-Really late at night-Sleep']
Run Code Online (Sandbox Code Playgroud)

请注意,该split()调用允许超过2个破折号.第二部分之后的每个破折号都将被忽略并包含在第三部分中.