Python 对字符串列表排序时出现的问题

Python 对字符串列表排序时出现的问题,python,python-3.x,Python,Python 3.x,我目前拥有以下字符串列表: ['0\t *** *', '1\t * *', '2\t * *', '3\t ***', '-1\t *', '-2\t *', '-3\t **'] 因此,我试图对列表进行排序,使其成为: ['3\t ***', '2\t * *', '1\t * *', '0\t *** *', '-1

我目前拥有以下字符串列表:

['0\t ***       *', '1\t    *     *', '2\t     *   *', '3\t      ***', 
 '-1\t            *', '-2\t             *', '-3\t              **']
因此,我试图对列表进行排序,使其成为:

['3\t      ***', '2\t     *   *', '1\t    *     *', '0\t ***       *', 
'-1\t            *', '-2\t             *', '-3\t              **']
但是,当我使用:

new_list = sorted(new_list, reverse=True)
我得到以下信息:

['3\t      ***', '2\t     *   *', '1\t    *     *', '0\t ***       *',
'-3\t              **', '-2\t             *', '-1\t            *']

如何修复它,以便在对列表中的字符串进行排序时考虑-3而不仅仅是-3。

如果前两个字符总是一个数字(例如
-1
)或一个数字和
\
\t
(例如
2\
),则可以设置自定义键和条带:

>>> sorted(i, reverse = True, key = lambda k: int(k[0:2].strip()))

['3\t      ***', '2\t     *   *', '1\t    *     *', '0\t ***       *', 
'-1\t            *', '-2\t             *', '-3\t              **']

字符串列表按字母顺序排序

您需要提供一个键函数,以便在
'\t'
字符上拆分,并将第一个字段解析为整数:

>>> l=['0\t ***       *', '1\t    *     *', '2\t     *   *', '3\t      ***', '-1\t            *', '-2\t             *', '-3\t              **']
>>> l.sort(key=lambda x: int(x.split('\t')[0]), reverse=True)
>>> l
['3\t      ***', '2\t     *   *', '1\t    *     *', '0\t ***       *', '-1\t            *', '-2\t             *', '-3\t              **']
请注意,您可以使用
new\u list.sort(reverse=True)
进行就地排序,而不是执行
new\u list=sorted(new\u list,reverse=True)


或者,如果您不介意使用第三方软件包,您可以看看该软件包,它似乎正好解决了此类问题。

谢谢!我想不出如何计算这些数字。