gpt4 book ai didi

python - 排序字符串列表时的问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:26 25 4
gpt4 key购买 nike

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

['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 而不仅仅是 -。

最佳答案

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

您需要提供一个关键函数,以便在 '\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_list.sort(reverse=True) 进行就地排序,而不是执行 new_list = sorted(new_list, reverse=True)

或者,如果您不介意使用第三方包,您可以查看 natsort包,似乎正好解决了这类问题。

关于python - 排序字符串列表时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com