Опять массив :)

Страницы: 1
RSS
Опять массив :)
 
Переформулирую задачу: продемонстрируйте, пожалуйста, код, сортирующий двумерный массив по одному столбцу. Способ не имеет значения: при помощи table.sort() или без него.
 
http://www.lua.org/pil/19.3.html
Сортировка
 
Цитата
Владимир пишет:
http://www.lua.org/pil/19.3.html
Сортировка
Владимир, огромное спасибо!
 
Код
ticker[ "SBER" ]=1
ticker[ "LKOH" ]=2

array={ticker["SBER"], ticker["LKOH"],}
Вроде все просто но не получается у меня.
Как получить   из array название тикера в string-е  "SBER" и  "LKOH"?
 
bulat,
не совсем понятно, чего вы хотите.
Если вас интересует вариант кода для перебора элементов таблицы, то для этого существуют функции lua: pairs() и ipairs().
Пример:
for  k, v in pairs(array)  do  message(tostring(k)..": "..v)  end
при условии, что array = { "SBER", "LKOH"  }  или т.п. В результате вы получите серию сообщений вида "1: SBER".
 
Цитата
Andrei2016 написал:
bulat,
не совсем понятно, чего вы хотите.

Хочу сортировку двумерного массива по второму столбцу.

Из такого :
Код
ticker["SBER"]= 3
ticker["LKOH"]= 2
ticker["GAZP"]= 1
Получить:
Код
GAZP  1
LKOH  2
SBER  3
Если это вообще возможно
 
Цитата
Andrei2016 написал:
bulat,
не совсем понятно, чего вы хотите.
for  k, v in pairs(array)  do  message(tostring(k)..": "..v)  end
при условии, что array = { "SBER", "LKOH"  }  или т.п. В результате вы получите серию сообщений вида "1: SBER".
Не ясно мне, как потом обращаться к "1: SBER" из вне цикла for  
 
Код
function table.transform(tab)
  local ntab = {}
  for k, v in pairs(tab) do ntab[v] = k end
  return ntab
end

ticker = {}
ticker["SBER"]= 3
ticker["LKOH"]= 2
ticker["GAZP"]= 1

for k, v in ipairs(table.transform(ticker)) do
  print(v, k)
end
Надо делать так, как надо. А как не надо - делать не надо.
Страницы: 1
Читают тему
Наверх