按元素的特定部分排序,该元素是列表中的字符串

时间:2015-04-15 22:13:27

标签: sorting python-3.x

我有一个列表如下:

list = [ 'hello (abd)', 'goodbye (aab)', 'leave (aaa)' ]

有没有办法按括号中的内容按字母顺序对列表进行排序? 所以例如输出看起来像这样:

sorted_list = ['leave (aaa)', 'goodbye (aab)', 'hello (abd)']

我试过了:

sorted(list)

但很明显,我会用第一个字母对它进行排序。我正在运行python 3.4。

2 个答案:

答案 0 :(得分:2)

使用lambda进行排序

>>> l = ['hello (abd)', 'goodbye (aab)', 'leave (aaa)']
>>> sorted(l, key=lambda x: x[x.find('(')+1:x.find(')')])
['leave (aaa)', 'goodbye (aab)', 'hello (abd)']

它将列表中的每个字符串从(切换为),并对该片段中的内容进行排序。

答案 1 :(得分:1)

您可以使用正则表达式\(.+\),它将在括号内匹配。然后re.search将用作排序列表的关键功能:

>>> import re
>>> l = ['hello (abd)', 'goodbye (aab)', 'leave (aaa)']
>>> sorted(l, key=lambda s: re.search(r"\(.+\)", s).group(0))
['leave (aaa)', 'goodbye (aab)', 'hello (abd)']