Есть список, каждый элемент которого - номер банковского счета - пробел - сумма. Нужно отсортировать по сумме не меняя формат

Есть список, каждый элемент которого это номер счета в банке - пробел - сумма ['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)
→ Ссылка