How i can use python to sort the list format
format=["12 sheet","4 sheet","48 sheet","6 sheet", "busrear", "phonebox","train"]
like this way
format =["4 sheet", "6 sheet", "12 sheet", "48 sheet", "busrear", "phonebox", "train"]
whose answer is here Python sort array of string with integers inside
but If the array is a list of list then how can we do that like this one
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]]
I Need the result to be like this
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]]
You can do this:
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
Output:
[[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]]
You can always use fancier list comprehension but readability counts. Which is why you might not feel like modifying the cool solution by falsetru for this slightly changed task.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With