2011-07-17 44 views
1

排序我有這樣的一個表:表值在Lua

tbl = { 
    ['etc1'] = 1337, 
    ['etc2'] = 14477, 
    ['etc3'] = 1336, 
    ['etc4'] = 1335 
} 

現在我需要梳理該表,從highes獲取輸出到最低值:

tbl = { 
    ['etc2'] = 14477, 
    ['etc1'] = 1337, 
    ['etc3'] = 1336, 
    ['etc4'] = 1335 
} 

已經嘗試過很多的像table.sort或官方手冊中的其他功能,但沒有任何幫助。所以希望你能幫助我出去!

問候。

+0

@mods,對不起,我很快提交了該標誌,這是http://stackoverflow.com/questions/6726130/lua-desc-sorting-table-problem – BMitch

回答

1

Lua表格沒有按鍵的順序排列。您需要構建您的數據更是這樣的:

tbl = { 
    [1] = { ['etc2'] = 14477 }, 
    [2] = { ['etc1'] = 1337 }, 
    [3] = { ['etc3'] = 1336 }, 
    [4] = { ['etc4'] = 1335 } 
} 

或本:

tbl = { 
    [1] = { 'etc2', 14477 }, 
    [2] = { 'etc1', 1337 }, 
    [3] = { 'etc3', 1336 }, 
    [4] = { 'etc4', 1335 } 
} 

或此,如果你想結合原始表使用它:

tbl_keys = { 
    [1] = 'etc2', 
    [2] = 'etc1', 
    [3] = 'etc3', 
    [4] = 'etc4' 
} 

請注意,我非常明確地寫了所有的數字索引。當然,你可以忽略它們,所以最後的解決辦法是:

tbl_keys = { 
    'etc2', 
    'etc1', 
    'etc3', 
    'etc4' 
} 

也許這意味着你應該寫果然原始數據到這個新的形式,或者你可以把它早些時候完成的,前一個功能桌子是在第一個地方製作的。

+0

嗯。 我創造我這樣表: 傷害= {} 如果沒有傷害[攻擊],然後 傷害[攻擊者] =價值 否則 傷害[攻擊者] =傷害[攻擊者] +值 結束 那麼,我該如何改變它,使輸出看起來像你的例子? fe。 : tbl = {['etc2'] = 14477}, [2] = {['etc1'] = 1337}, [3] = {['etc3'] = 1336} , [4] = {['etc4'] = 1335} } 問候。 – Lucas

+0

如果您遇到困難,爲什麼不試試併發佈一個新問題? –

+0

我看到你在這裏發佈它:http://stackoverflow.com/questions/6726130/lua-desc-sorting-table-problem –