Как отсортировать массив по второму параметру до 10? Python

filename = input('Enter name of file: ')
file = open(filename, 'r')
arr = []
arr1 = []

arr = file.readlines()

for i in arr:
    arr1.append(i.strip().split(','))

for i in sorted(arr1, key=lambda para : if(int(para[2]))<11):
    print(i)

file.close()

Как отсортировать массив по 2-му параметру(возраст) до 10, и вывести на экран этот массив, но при этом все что после 10 не должно быть посортированное и сохранять свой изначальный порядок. Вот файл:

toy1,700,18
toy2,50,6
toy3,800,16
toy4,30,4
toy5,100,5
toy6,150,1
toy7,64,2
toy8,70,7
toy9,65,8
toy10,105,9
toy11,456,10 

На экран должно выводить вот так:

toy6,150,1
toy7,64,2
toy4,30,4
toy5,100,5
toy2,50,6
toy8,70,7
toy9,65,8
toy10,105,9
toy11,456,10
toy1,700,18
toy3,800,16

Ответы (1 шт):

Автор решения: Kirill Vercetti

Если решение в лоб, то можно читать в два списка: в первый записываете все игрушки до 10 лет включительно, во второй оставшиеся. Первый список сортируете, затем объединяете со вторым.

filename = input('Enter name of file: ')
with open(filename) as f:
    l1 = []
    l2 = []

    for i in f:
        row = i.strip().split(',')
        if row[-1] > 10:
            l2.append(row)
        else:
            l1.append(row)


    l1.sort(key=lambda i: i[-1])

    l1.extend(l2)

    print(l1)

Повторюсь, это в лоб, подумайте, может что-то лучше сделаете =) И да, используйте контекстный менеджер при работе с любыми ресурсами, в частности с файлом.

→ Ссылка