Уведомления

Группа в Telegram: @pythonsu

#1 Июль 9, 2008 15:04:01

Erick
От:
Зарегистрирован: 2008-07-09
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции сортировки нескольких массивов

Есть ли в Питоне функции для сортировки нескольких массивов одновременно с сохранением соотвеьсьвия межу ключами и значениями.
Аналог в PHP - array_multisort (http://www.php.net/manual/ru/function.array-multisort.php).
Заранее благодарен.



Отредактировано (Июль 9, 2008 15:04:20)

Офлайн

#2 Июль 9, 2008 15:55:46

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Функции сортировки нескольких массивов

Dict принципиально не подлежит сортировке.



Офлайн

#3 Июль 9, 2008 16:18:50

Erick
От:
Зарегистрирован: 2008-07-09
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции сортировки нескольких массивов

ZAN А как можно. Я Питон практически не знаю, но хотел бы начать изучать на конкретной задаче.
Там нужно набор данных отсортировать по двум полям, одно из которых строковое содержит номера помещений (например, 001, 002, 4, 2, 10А, 10Б), нужно отсортировать по нему как буд-то он числовое. В PHP переганяется эти поля и весь набор в массивы, а затем они сортируются вышеописанной функцией с сохранением соответствия индексов. Как это можно в Питоне сделать?



Офлайн

#4 Июль 9, 2008 16:37:27

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Функции сортировки нескольких массивов

А… для этого в питоне есть структура list, у которой есть метод sort:
rooms =
rooms.sort()
Единственное “но” - это то, что метод отсортирует элементы не так, как тебе нужно (т.к. сортировать их будет, как строки), но есть возможность для таких целей передавать в качестве параметра функцию cmp, которая будет сравнивать два элемента и возвращать, какой из элементов - больший.
То есть, единственное, что нужно будет сделать - это преобразовать в этой функцие строки в числа (например, отделить цифры от др. символов регуляркой) и вернуть результат собственного сравнения.
def cmp(one, two):
bla-bla
return ans
rooms.sort(cmp)



Отредактировано (Июль 9, 2008 16:44:01)

Офлайн

#5 Июль 9, 2008 20:18:20

Jenyay
От:
Зарегистрирован: 2007-08-10
Сообщения: 173
Репутация: +  1  -
Профиль   Отправить e-mail  

Функции сортировки нескольких массивов

Можно сделать класс, который бы содержал по одному элементу из каждого массива. Сделать массив такого класса и при сортировке указать свою функцию, которая будет сортировать эти классы из двух элементов. Вместо класса вполне подойдет кортеж.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version