我有一个列表如下:
list = [ 'hello (abd)', 'goodbye (aab)', 'leave (aaa)' ]
有没有办法按括号中的内容按字母顺序对列表进行排序? 所以例如输出看起来像这样:
sorted_list = ['leave (aaa)', 'goodbye (aab)', 'hello (abd)']
我试过了:
sorted(list)
但很明显,我会用第一个字母对它进行排序。我正在运行python 3.4。
答案 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)']