Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 按元素的特定部分排序,该元素是列表中的字符串_Sorting_Python 3.x - Fatal编程技术网

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)']