Sorting 按元素的特定部分排序,该元素是列表中的字符串
我有一份清单如下:Sorting 按元素的特定部分排序,该元素是列表中的字符串,sorting,python-3.x,Sorting,Python 3.x,我有一份清单如下: list = [ 'hello (abd)', 'goodbye (aab)', 'leave (aaa)' ] 有没有办法按括号中的字母顺序对列表进行排序? 例如,输出如下所示: sorted_list = ['leave (aaa)', 'goodbye (aab)', 'hello (abd)'] 我试过: sorted(list) 但很明显,这是按第一个字母排序的。我正在运行python 3.4。使用lambda进行排序 >>> l = ['h
list = [ 'hello (abd)', 'goodbye (aab)', 'leave (aaa)' ]
有没有办法按括号中的字母顺序对列表进行排序?
例如,输出如下所示:
sorted_list = ['leave (aaa)', 'goodbye (aab)', 'hello (abd)']
我试过:
sorted(list)
但很明显,这是按第一个字母排序的。我正在运行python 3.4。使用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)']
它将列表中的每个字符串从
(
到)
进行切片,并根据该“切片”中的内容进行排序。您可以使用正则表达式\(.+\)
,它将在括号内匹配。然后将用作对列表进行排序的关键功能:
>>> 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)']