【问题标题】:How to sort a list of Strings including integers in Python [duplicate]如何在Python中对包括整数的字符串列表进行排序[重复]
【发布时间】:2018-08-19 00:30:38
【问题描述】:

这是我的输入:

a = ['Dr1', 'Dr10', 'Dr11', 'Dr12','Dr2', 'Dr3']
a.sort()
print(a)

这是当前的输出:

['Dr1', 'Dr10', 'Dr11', 'Dr12', 'Dr2', 'Dr3']

这是我想要生成的输出:

['Dr1', 'Dr2', 'Dr3', 'Dr10', 'Dr11', 'Dr12']

【问题讨论】:

  • 您的字符串是否总是采用Dr 后跟数字的形式?如果是这样,您可以按key=lambda x: int(x[2:]) 或链接副本的答案中显示的其他内容进行排序。但是,如果字母可能不同,并且您想考虑它们——例如,Dr2Dr10 之前,但 Mr1Dr2 之后,您可能想要一个“自然排序”库而不是构建手工制作。

标签: python sorting


【解决方案1】:

为了通过每个元素中的尾随值进行排序,请使用re

import re
a = ['Dr1', 'Dr10', 'Dr11', 'Dr12','Dr2', 'Dr3']
new_a = sorted(a, key=lambda x:int(re.findall('\d+', x)[0]))

输出:

['Dr1', 'Dr2', 'Dr3', 'Dr10', 'Dr11', 'Dr12']

【讨论】:

    猜你喜欢
    • 2020-06-27
    • 2012-07-22
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 2016-12-25
    • 2023-04-08
    • 2022-01-11
    • 2019-02-05
    相关资源
    最近更新 更多