我如何使用python对列表格式进行排序
format=["12 sheet","4 sheet","48 sheet","6 sheet", "busrear", "phonebox","train"]
像这样
format =["4 sheet", "6 sheet", "12 sheet", "48 sheet", "busrear", "phonebox", "train"]
其答案在这里是Python排序的字符串数组,其中包含整数
但是如果数组是列表的列表,那么我们如何像这样
format=[[1, '12 sheet', 0],[2, '4 sheet', 0], [3, '48 sheet', 0], [4, '6 sheet', 0 [5, 'Busrear', 0], [6, 'phonebox', 0], [7, 'train', 0]]
我需要这样的结果
format=[[2, '4 sheet', 0],[4, '6 sheet', 0],[1, '12 sheet', 0],[3, '48 sheet', 0],[5, 'Busrear', 0], [6, 'phonebox', 0], [7, 'train', 0]]
你可以这样做:
lst = [[1L, u'12 sheet', 0],
[2L, u'4 sheet', 0],
[3L, u'48 sheet', 0],
[4L, u'6 sheet', 0],
[5L, u'Busrear', 0],
[6L, u'phonebox', 0],
[7L, u'train', 0]]
def sortby(x):
try:
return int(x[1].split(' ')[0])
except ValueError:
return float('inf')
lst.sort(key=sortby)
print lst
输出:
[[2L, u'4 sheet', 0], [4L, u'6 sheet', 0], [1L, u'12 sheet', 0], [3L, u'48 sheet', 0], [5L, u'Busrear', 0], [6L, u'phonebox', 0], [7L, u'train', 0]]
您总是可以使用更高级的列表理解功能,但可读性很重要。这就是为什么您可能不希望通过falsetru修改此解决方案来完成此稍有更改的任务的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句