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