2014-09-26 3 views
0

У меня есть путь массив НЕСОРТИРОВАННАЯСортировка массива в Tcl

path(11,0) = susan susan_s1 0.0 peter peter_i_p1 0.0 peter peter_o_p1 0.0 
path(2,0) = maria maria_s2 0.0 ted ted_i_p2 0.0 ted ted_o_p2 0.0 
path(3,0) = maria maria_s3 0.0 ted ted_i_p3 0.0 ted ted_o_p3 0.0 
path(0,0) = maria maria_s0 0.0 ted ted_i_p0 0.0 ted ted_o_p0 0.0 
path(10,0) = susan susan_s0 0.0 peter peter_i_p0 0.0 peter peter_o_p0 0.0 
path(1,0) = maria maria_s1 0.0 ted ted_i_p1 0.0 ted ted_o_p1 0.0 

Если бы я использовал lsort для (пути имен массивов), я получить

path(0,0) = maria maria_s0 0.0 ted ted_i_p0 0.0 ted ted_o_p0 0.0 
path(1,0) = maria maria_s1 0.0 ted ted_i_p1 0.0 ted ted_o_p1 0.0 
path(10,0) = susan susan_s0 0.0 peter peter_i_p0 0.0 peter peter_o_p0 0.0 
path(11,0) = susan susan_s1 0.0 peter peter_i_p1 0.0 peter peter_o_p1 0.0 
path(2,0) = maria maria_s2 0.0 ted ted_i_p2 0.0 ted ted_o_p2 0.0 
path(3,0) = maria maria_s3 0.0 ted ted_i_p3 0.0 ted ted_o_p3 0.0 

Однако я хотел бы иметь окончательный файл следующим образом:

path(0,0) = maria maria_s0 0.0 ted ted_i_p0 0.0 ted ted_o_p0 0.0 
path(1,0) = maria maria_s1 0.0 ted ted_i_p1 0.0 ted ted_o_p1 0.0 
path(2,0) = maria maria_s2 0.0 ted ted_i_p2 0.0 ted ted_o_p2 0.0 
path(3,0) = maria maria_s3 0.0 ted ted_i_p3 0.0 ted ted_o_p3 0.0 
path(10,0) = susan susan_s0 0.0 peter peter_i_p0 0.0 peter peter_o_p0 0.0 
path(11,0) = susan susan_s1 0.0 peter peter_i_p1 0.0 peter peter_o_p1 0.0 

Как это сделать?

либо) сортировки индекса пути или иметь список ключевых слов (мария, Сюзан), чтобы получить конечный файл

Thx, Мария

ответ

-1

хммм ...

path(11,0) = susan susan_s1 0.0 peter peter_i_p1 0.0 peter peter_o_p1 0.0 
path(2,0) = maria maria_s2 0.0 ted ted_i_p2 0.0 ted ted_o_p2 0.0 
path(3,0) = maria maria_s3 0.0 ted ted_i_p3 0.0 ted ted_o_p3 0.0 
path(0,0) = maria maria_s0 0.0 ted ted_i_p0 0.0 ted ted_o_p0 0.0 
path(10,0) = susan susan_s0 0.0 peter peter_i_p0 0.0 peter peter_o_p0 0.0 
path(1,0) = maria maria_s1 0.0 ted ted_i_p1 0.0 ted ted_o_p1 0.0 

является не unsorted. Может быть, вы хотите видеть индексы по числовым заказам.

path(Number,0) 

then Number is Order! не значение! Да, это индекс!

Путь всегда упорядочивается Number называется индексом! идеальный порядок ввода, показанный порядок независимо от того, ...

Я никогда не слышал о сортировке индексов!

2

Попробуйте -dictionary вариант lsort.

lsort -dictionary [array names path] 
# -> 0,0 1,0 2,0 3,0 10,0 11,0 

Документация: array, lsort

+0

Это отличное решение, так как он будет также сортировать по номерам после '' в качестве вспомогательного ключа. Но то, что он не будет делать, это обрабатывать отрицательные числа правильно, поскольку он обрабатывает '-' как разделитель, а не минус-символ. (Для многих применений это не имеет значения.) –

+0

@DonalFellows: Я всегда стараюсь избегать думать о негативных вещах. –