python - 如何在 Python 中对号码列表进行排序?

标签 python list sorting

<分区>

list = ['c:8', 'c:9', 'c:13', 'c:19', 'c:2', 'c:3', 'c:0', 'c:1', 'c:6', 'c:7', 'c:4', 'c:5', 'c:14', 'c:18', 'c:17', 'c:12', 'c:15', 'c:11', 'c:10', 'c:16', 'c:20']

我使用了“sorted()”但得到了这个结果

['c:0', 'c:1', 'c:10', 'c:11', 'c:12', 'c:13', 'c:14', 'c:15', 'c:16', 'c:17', 'c:18', 'c:19', 'c:2', 'c:20', 'c:3', 'c:4', 'c:5', 'c:6', 'c:7', 'c:8', 'c:9']

但我想要的是

['c:0', 'c:1', 'c:2', 'c:3', 'c:4', 'c:5', 'c:6', 'c:7', 'c:8', 'c:9', 'c:10', 'c:11', 'c:12', 'c:13', 'c:14', 'c:15', 'c:16', 'c:17', 'c:18', 'c:19','c:20']

除了得到我想要的,我还想知道为什么 sorted() 不能工作。

最佳答案

>>> l = ['c:8', 'c:9', 'c:13', 'c:19', 'c:2', 'c:3', 'c:0', 'c:1', 'c:6', 'c:7', 'c:4', 'c:5', 'c:14', 'c:18', 'c:17', 'c:12', 'c:15', 'c:11', 'c:10', 'c:16', 'c:20']
>>> l.sort(key=lambda x: int(x[2:])
>>> l
['c:0', 'c:1', 'c:2', 'c:3', 'c:4', 'c:5', 'c:6', 'c:7', 'c:8', 'c:9', 'c:10', 'c:11', 'c:12', 'c:13', 'c:14', 'c:15', 'c:16', 'c:17', 'c:18', 'c:19', 'c:20']

因为 'c:1', 'c:10', 'c:11' 是字符串,而 'c:1', 'c:10', 'c: 11'都是以c:1开头。所以你会得到像 'c:1', 'c:10', 'c:11', 'c:12', 'c:13', 'c:14' 这样的东西。

作为我的代码,使用 sorted() 的关键参数或 list.sort() , 并使用 slice 获取数字,然后使用 int() 函数将数字转换为 int。

关于python - 如何在 Python 中对号码列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33782035/

相关文章:

python - web2py 中跨 session 的全局对象访问?

python - 使用 Nose 和 Sqlalchemy 以及固定装置编写 Python 测试类

Python3 - Chrome 奇怪的 urldecode 与 urllib.parse.parse_qs()

python - 一个 pygame Sprite 列表丢失了它的第一个元素,并获得了最后一个元素的副本

c++ - 本地址因本地作用域而被破坏时,第三次调用 temp2->next 如何能够访问第二个节点的地址?

Linux 命令 : how to sort a file based on differences between columns?

javascript - 比较对象并仅获取所有对象中存在的对象

python - 优化python中的字符串替换

c# - 用一定数量的元素初始化 List<>

algorithm - 逐行搜索排序的 2D n x n 矩阵