首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对Python列表进行异常排序

对Python列表进行异常排序
EN

Stack Overflow用户
提问于 2017-12-04 05:00:46
回答 3查看 344关注 0票数 0

如何按字母顺序对python列表进行排序,同时考虑到列表项后面的编号。参见下面的示例和用于排序的代码。请注意,如果数字低于10,则不可能在代码中插入零。

原始列表:

“绘图-n-3”、“绘图-n-2”、“绘图-n-1”、“绘图-n-7”、“绘图-n-6”、“绘图-n-5”、“绘图-n-4”、“绘图-n-9”、“绘图-n-8”、“绘图-n-16”、“绘图-n-15”、“绘图-n-14”、“绘图-n-13”、“绘图-n-12”,“绘图-n-11”、“绘图-n-10”、“绘图-n-17”

排序列表:

“绘图-n-1”、“绘图-n-10”、“绘图-n-11”、“绘图-n-12”、“绘图-n-13”、“绘图-n-14”、“绘图-n-15”、“绘图-n-16”、“绘图-n-17”、“绘图-n-2”、“绘图-n-3”、“绘图-n-4”、“绘图-n-5”、“绘图-n-6”,“绘图-n-7”、“绘图-n-8”、“绘图-n-9”

期望的列表输出:

“绘图-n-1”、“绘图-n-2”、“绘图-n-3”、“绘图-n-4”、“绘图-n-5”、“绘图-n-6”、“绘图-n-7”、“绘图-n-8”、“绘图-n-9”、“绘图-n-10”、“绘图-n-11”、“绘图-n-12”、“绘图-n-13”、“绘图-n-14”,“绘图-n-15”、“绘图-n-16”、“绘图-n-17”

代码:

代码语言:javascript
运行
复制
dwg_number_keys = [key for key in kwargs if key.startswith("drawing-n-")]
print dwg_number_keys
print sorted(dwg_number_keys, key=str.lower)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-04 05:04:42

如下所示:

代码语言:javascript
运行
复制
>>> my_list = ['drawing-n-3', 'drawing-n-2', 'drawing-n-1', 'drawing-n-7', 'drawing-n-6', 'drawing-n-5', 'drawing-n-4', 'drawing-n-9', 'drawing-n-8', 'drawing-n-16', 'drawing-n-15', 'drawing-n-14', 'drawing-n-13', 'drawing-n-12', 'drawing-n-11', 'drawing-n-10', 'drawing-n-17']
>>> sorted(my_list, key=lambda s:int(s[s.rindex('-')+1:]))
['drawing-n-1', 'drawing-n-2', 'drawing-n-3', 'drawing-n-4', 'drawing-n-5', 'drawing-n-6', 'drawing-n-7', 'drawing-n-8', 'drawing-n-9', 'drawing-n-10', 'drawing-n-11', 'drawing-n-12', 'drawing-n-13', 'drawing-n-14', 'drawing-n-15', 'drawing-n-16', 'drawing-n-17']

key lambda只是解析在每个字符串的最后一个“-”标记之后找到的整数。

票数 0
EN

Stack Overflow用户

发布于 2017-12-04 05:01:48

将其从字符串解析为要排序的整数:-

代码语言:javascript
运行
复制
>>> begin = len("drawing-n-")
>>> sorted(dwg_number_keys, key=lambda s:int(s[len("drawing-n-"):]))
['drawing-n-1', 'drawing-n-2', 'drawing-n-3', 'drawing-n-4', 'drawing-n-5', 'drawing-n-6', 'drawing-n-7', 'drawing-n-8', 'drawing-n-9', 'drawing-n-10', 'drawing-n-11', 'drawing-n-12', 'drawing-n-13', 'drawing-n-14', 'drawing-n-15', 'drawing-n-16', 'drawing-n-17']
票数 0
EN

Stack Overflow用户

发布于 2017-12-04 05:05:12

这将得到你想要的,如果格式和你想象的一样一致的话。

lambda x: int(x.split('-')[-1])

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47626770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档