如何对 Python 中的字符串列表进行排序
How to sort a list of strings in Python
在 Python
中,我有一个 str
列表,其中包含以下符号:
MyList = ['1:10', '5:2', '10:7', ...]
其中:
前面的字符代表行号,后面的字符代表列号。
我想知道是否可以像这样对列表进行排序:
MyList = ['1:1', '1:2', '1:3', ..., '2:1', '2:2', '2:3', ...]
当然可以。使用 sorted
(或 list.sort()
)的 key=
参数,我们可以定义一个函数,用冒号拆分每个项目并将部分转换为整数。之后,Python 的自然排序完成剩下的工作。 (比较列表等可迭代对象 item-wise,并且比较整数,就像您期望比较整数一样。)
>>> MyList = ['5:2', '1:10', '93:881', '93:8', '4:8', '10:7']
>>> sorted(MyList, key=lambda item: [int(part) for part in item.split(":")])
['1:10', '4:8', '5:2', '10:7', '93:8', '93:881']
在 Python
中,我有一个 str
列表,其中包含以下符号:
MyList = ['1:10', '5:2', '10:7', ...]
其中:
前面的字符代表行号,后面的字符代表列号。
我想知道是否可以像这样对列表进行排序:
MyList = ['1:1', '1:2', '1:3', ..., '2:1', '2:2', '2:3', ...]
当然可以。使用 sorted
(或 list.sort()
)的 key=
参数,我们可以定义一个函数,用冒号拆分每个项目并将部分转换为整数。之后,Python 的自然排序完成剩下的工作。 (比较列表等可迭代对象 item-wise,并且比较整数,就像您期望比较整数一样。)
>>> MyList = ['5:2', '1:10', '93:881', '93:8', '4:8', '10:7']
>>> sorted(MyList, key=lambda item: [int(part) for part in item.split(":")])
['1:10', '4:8', '5:2', '10:7', '93:8', '93:881']