сортировка массива

Tema05

Известный
Автор темы
1,445
404
Версия MoonLoader
.026-beta
Как отсортировать ассоциативный массив по ключам?
Ту проблема не в самой сортировке. Достаточно через pairs достать ключи в обычный массив и отсортировать. Проблема в том как значения массива превратить ключи.
 
  • Нравится
Реакции: Vintik
Решение
Отсортировать словарь невозможно. Но возможно получить список из массивов с двумя элементами (известных как пара), первый элемент это ключ, а второй это значение:
{ {"key", "value"}, {"key", "value"}, {"key", "value"}, }

Lua:
function sortedItems(dict)
    local items = {}

    for key, value in pairs(dict) do
        table.insert(items, {key, value})
    end

    table.sort(items, function(a, b) return a[1] < b[1] end)

    return items
end

----------------

dict = {Hampshire = "Southampton", Wiltshire = "Trowbridge",
        Cornwall = "Truro", Oxfordshire = "Oxford",
        Somerset = "Taunton", Devon = "Exeter"}

items = sortedItems(dict)

for index, item in ipairs(items) do
    print(item[1], item[2])
end

П.С.
Я использую...

Double Tap Inside

Известный
Проверенный
1,902
1,249
Отсортировать словарь невозможно. Но возможно получить список из массивов с двумя элементами (известных как пара), первый элемент это ключ, а второй это значение:
{ {"key", "value"}, {"key", "value"}, {"key", "value"}, }

Lua:
function sortedItems(dict)
    local items = {}

    for key, value in pairs(dict) do
        table.insert(items, {key, value})
    end

    table.sort(items, function(a, b) return a[1] < b[1] end)

    return items
end

----------------

dict = {Hampshire = "Southampton", Wiltshire = "Trowbridge",
        Cornwall = "Truro", Oxfordshire = "Oxford",
        Somerset = "Taunton", Devon = "Exeter"}

items = sortedItems(dict)

for index, item in ipairs(items) do
    print(item[1], item[2])
end

П.С.
Я использую термины из питона, где
Словарь (dict) это { ["key"] = "value", ["key2"] = "value"}
Список (list) это {"value", 33, false, true}
Массив это список из однотипных элементов которые обычно только для чтения, например массив из строк: {"value", "value", "value"}
 
Последнее редактирование: