python,通过一个键来排序列表,该键是每个元素的子串

use*_*061 10 python sorting list

程序的一部分构建此列表,

[u'1 x Affinity for war', u'1 x Intellect', u'2 x Charisma', u'2 x Perception', u'3 x Population growth', u'4 x Affinity for the land', u'5 x Morale']
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试按进化名称而不是数字按字母顺序对其进行排序.有没有什么方法可以做到这一点,而不只是改变列表中出现的两个东西的顺序(如'intellect x 1')?

S.L*_*ott 23

你必须从字符串中获取"密钥".

def myKeyFunc( aString ):
    stuff, x, label = aString.partition(' x ')
    return label

aList.sort( key= myKeyFunc )
Run Code Online (Sandbox Code Playgroud)

  • 您是否知道可以使用下划线来表示您不会使用的元组:`_,_,label = aString.partition('x')` (2认同)

dF.*_*dF. 10

怎么样:

lst.sort(key=lamdba s: s.split(' x ')[1])
Run Code Online (Sandbox Code Playgroud)