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)
或者,如果您不介意使用第三方软件包,您可以看看该软件包,它似乎正好解决了此类问题。谢谢!我想不出如何计算这些数字。