Найти - Пользователи
Полная версия: Функции сортировки нескольких массивов
Начало » Python для новичков » Функции сортировки нескольких массивов
1
Erick
Есть ли в Питоне функции для сортировки нескольких массивов одновременно с сохранением соотвеьсьвия межу ключами и значениями.
Аналог в PHP - array_multisort (http://www.php.net/manual/ru/function.array-multisort.php).
Заранее благодарен.
ZAN
Dict принципиально не подлежит сортировке.
Erick
ZAN А как можно. Я Питон практически не знаю, но хотел бы начать изучать на конкретной задаче.
Там нужно набор данных отсортировать по двум полям, одно из которых строковое содержит номера помещений (например, 001, 002, 4, 2, 10А, 10Б), нужно отсортировать по нему как буд-то он числовое. В PHP переганяется эти поля и весь набор в массивы, а затем они сортируются вышеописанной функцией с сохранением соответствия индексов. Как это можно в Питоне сделать?
ZAN
А… для этого в питоне есть структура list, у которой есть метод sort:
rooms =
rooms.sort()
Единственное “но” - это то, что метод отсортирует элементы не так, как тебе нужно (т.к. сортировать их будет, как строки), но есть возможность для таких целей передавать в качестве параметра функцию cmp, которая будет сравнивать два элемента и возвращать, какой из элементов - больший.
То есть, единственное, что нужно будет сделать - это преобразовать в этой функцие строки в числа (например, отделить цифры от др. символов регуляркой) и вернуть результат собственного сравнения.
def cmp(one, two):
bla-bla
return ans
rooms.sort(cmp)
Jenyay
Можно сделать класс, который бы содержал по одному элементу из каждого массива. Сделать массив такого класса и при сортировке указать свою функцию, которая будет сортировать эти классы из двух элементов. Вместо класса вполне подойдет кортеж.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB