LINUX.ORG.RU

Python: сортировка массива (INTEGER, STRING)

 ,


1

1

Если не хочется использовать СУБД, как в Питоне быстро отсортировать табличку в десяток тысяч строк и несколько столбцов, по одному столбцу? Без использования дисковой памяти, в оперативке.

a = [
 (1, "ABC", "BC12"),
 (2, "BCD", "BC23"),
 (3, "DEF", "BC34"),
]

Приходит на ум использование NumPy, но насколько я помню, там с этим небольшие сложности - неудобно там, если часть данных не числовой формы (приходится дописывать для колонок «фильтры», AFAIK).

Есть функция sorted, есть метод списка sort.

In [3]: a = [
   ...:  (1, "ABC", "BC12"),
   ...:  (2, "BCD", "BC23"),
   ...:  (3, "DEF", "BC34"),
   ...: ]

In [4]: 

In [4]: sorted(a, key=lambda x: x[1], reverse=True)
Out[4]: [(3, 'DEF', 'BC34'), (2, 'BCD', 'BC23'), (1, 'ABC', 'BC12')]

provaton ★★★★★
()
Ответ на: комментарий от anonymous

Да-да.
Я уже нашёл. Что-то тупил целый день, если не больше.
На Хабре об этом есть: http://habrahabr.ru/post/138535/

nodes = ...
def sortByFirst(item):
  return item[0]
nodes.sort(key=sortByFirst)
print nodes

Спасибо всем.

NeProfessor
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.