Python sort list of list containing integer and string with integers inside

list, python, sorting

Solution

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.

Problem

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]] ```

Original source

Related problems