Python 基于每个字符串中的子字符串的字符串排序列表

Python 基于每个字符串中的子字符串的字符串排序列表,python,string,list,sorting,Python,String,List,Sorting,我的清单如下: a = ['e8:04:62:23:57:d0\t2462\t-55\t[WPA2-PSK-CCMP][ESS]\tTest', '00:1b:2f:48:8b:f2\t2462\t-57\t[WPA2-PSK-CCMP-preauth][ESS]\tT_test', 'e8:04:62:23:4e:70\t2437\t-61\t[WPA2-PSK-CCMP][ESS]\tT_guest', 'e8:04:62:23:57:d1\t2462\t-53\t[ESS]\t', 'e

我的清单如下:

 a = ['e8:04:62:23:57:d0\t2462\t-55\t[WPA2-PSK-CCMP][ESS]\tTest', '00:1b:2f:48:8b:f2\t2462\t-57\t[WPA2-PSK-CCMP-preauth][ESS]\tT_test', 'e8:04:62:23:4e:70\t2437\t-61\t[WPA2-PSK-CCMP][ESS]\tT_guest', 'e8:04:62:23:57:d1\t2462\t-53\t[ESS]\t', 'e8:04:62:23:4e:71\t2437\t-56\t[ESS]\t']

我想根据每个元素第三个选项卡后的数字对列表进行排序,因此在本例中-55,-57,-61,-53应该将列表顺序更改为-53,-55,-57,-61。我尝试过的任何方法似乎都非常复杂(制作列表等等)。我应该使用正则表达式/模式来简化此过程吗?

您可以在此处将自定义lambda传递给
排序的
函数,以获得所需的结果:

>>> a = ['e8:04:62:23:57:d0\t2462\t-55\t[WPA2-PSK-CCMP][ESS]\tTest', '00:1b:2f:48:8b:f2\t2462\t-57\t[WPA2-PSK-CCMP-preauth][ESS]\tT_test', 'e8:04:62:23:4e:70\t2437\t-61\t[WPA2-PSK-CCMP][ESS]\tT_guest', 'e8:04:62:23:57:d1\t2462\t-53\t[ESS]\t', 'e8:04:62:23:4e:71\t2437\t-56\t[ESS]\t']
>>> sorted(a, key = lambda x: int(x.split("\t")[2]), reverse=True)
['e8:04:62:23:57:d1\t2462\t-53\t[ESS]\t', 'e8:04:62:23:57:d0\t2462\t-55\t[WPA2-PSK-CCMP][ESS]\tTest', 'e8:04:62:23:4e:71\t2437\t-56\t[ESS]\t', '00:1b:2f:48:8b:f2\t2462\t-57\t[WPA2-PSK-CCMP-preauth][ESS]\tT_test', 'e8:04:62:23:4e:70\t2437\t-61\t[WPA2-PSK-CCMP][ESS]\tT_guest']

您可以在此处将自定义lambda传递给
排序
函数以获得所需结果:

>>> a = ['e8:04:62:23:57:d0\t2462\t-55\t[WPA2-PSK-CCMP][ESS]\tTest', '00:1b:2f:48:8b:f2\t2462\t-57\t[WPA2-PSK-CCMP-preauth][ESS]\tT_test', 'e8:04:62:23:4e:70\t2437\t-61\t[WPA2-PSK-CCMP][ESS]\tT_guest', 'e8:04:62:23:57:d1\t2462\t-53\t[ESS]\t', 'e8:04:62:23:4e:71\t2437\t-56\t[ESS]\t']
>>> sorted(a, key = lambda x: int(x.split("\t")[2]), reverse=True)
['e8:04:62:23:57:d1\t2462\t-53\t[ESS]\t', 'e8:04:62:23:57:d0\t2462\t-55\t[WPA2-PSK-CCMP][ESS]\tTest', 'e8:04:62:23:4e:71\t2437\t-56\t[ESS]\t', '00:1b:2f:48:8b:f2\t2462\t-57\t[WPA2-PSK-CCMP-preauth][ESS]\tT_test', 'e8:04:62:23:4e:70\t2437\t-61\t[WPA2-PSK-CCMP][ESS]\tT_guest']

谢谢你,这比我之前做的要简洁得多,而且“pythonic”得多。别忘了使用
int
(为了更好地理解字典顺序)这个解决方案有缺陷,你必须将它转换成
int
阅读这个问题:谢谢,我可以看到这里有一个错误,如果我使用int,这个解决方案不起作用,它会将它们从我想要的-61中向后排序。必须添加
reverse=True
以及
int
。谢谢,这比我之前所做的更简洁和“pythonic”。别忘了使用
int
(为了熟悉字典顺序)这个解决方案有缺陷,您必须将其转换为
int
阅读此问题:谢谢,我可以看到这里有一个错误,如果我使用int解决方案不起作用,它将从我想要的-61开始向后排序。必须添加
reverse=True
以及
int