Есть список, каждый элемент которого - номер банковского счета - пробел - сумма. Нужно отсортировать по сумме не меняя формат
Есть список, каждый элемент которого это номер счета в банке - пробел - сумма ['123 100', '456 -100', '789 -300', '777 500']
Мне не удается реализовать алгоритм, который отсортирует список в таком же формате (счет - пробел - сумма) по сумме, от минимальной до максимальной. На русском получается описать решение разными алгоритмами, на Python не выходит... Прошу написать код.
Ответы (1 шт):
У функции sorted() есть параметр key который принимает функцию, на которую опирается при сортировке. Эта функция принимает через аргумент значение элемента массива, а возвращает значение, относитльно которого нужно упорядочить массив.
В вашем случае нужно возвращать сумму на счету.
Пример кода:
data = ['123 100', '456 -100', '789 -300', '777 500']
sorted(data, key=lambda val: int(val.split()[1]))
без использования sort, sorted, lambda, def
Алгоритм сортировки пузырьком для ваших данных:
data = ['123 100', '456 -100', '789 -300', '777 500']
for i in range(len(data) - 1):
for y in range(1, len(data) - i):
if int(data[y-1].split()[1]) > int(data[y].split()[1]):
data[y], data[y-1] = data[y-1], data[y]
print(data)