根据字符串元素的数字部分对嵌套列表进行排序

时间:2021-02-15 13:41:55

标签: python sorting

我有:

l = [['T182', 'XXX-0'], ['S41', 'Q8BFU2-0']]

我想要:

[['S41', 'Q8BFU2-0'], ['T182', 'XXX-0']]

我目前的解决方案是构建一个新的嵌套列表:

i = [['T', '182', 'XXX-0'], ['S', '41', 'Q8BFU2-0']]

这使我可以轻松获得结果,尽管没有使用最佳方法。

我想要从 l 得到的是根据每个子列表的第一个元素的数字部分在这个嵌套列表上应用数字排序。

这无需重建嵌套列表。

1 个答案:

答案 0 :(得分:1)

假设元素遵循一个字符加一个整数的模式,你可以这样做:

res = sorted(l, key=lambda x: int(x[0][1:]))

x[0] 选择子列表的第一个元素; x[0][1:] 选择除第一个字符以外的所有内容。剩下的将转换为整数并用作 keysorted