您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在python中排序-如何对包含字母数字值的列表进行排序?

在python中排序-如何对包含字母数字值的列表进行排序?

您想使用

import re

_nsre = re.compile('([0-9]+)')
def natural_sort_key(s):
    return [int(text) if text.isdigit() else text.lower()
            for text in re.split(_nsre, s)]

用法示例:

>>> list1 = ["1", "100A", "342B", "2C", "132", "36", "302F"]
>>> list1.sort(key=natural_sort_key)
>>> list1
['1', '2C', '36', '100A', '132', '302F', '342B']

通过将元素拆分为多个列表以分离出数字并将它们作为整数而不是字符串进行比较来起作用:

>>> natural_sort_key("100A")
['', 100, 'a']
>>> natural_sort_key("342B")
['', 342, 'b']

请注意,仅当您始终将int与int和字符串与string进行比较时,这才在python3中起作用,否则会出现TypeError: unorderabletypes异常。

python 2022/1/1 18:38:49 有245人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶