Luaの内部テーブルを「スコア」、次に「インデックス」で並べ替える方法は?

男の子

次のLuaテーブルが変数に格納されていますT

{
    ["mn"] = { ["index"] = 7, ["key"] = "mn", ["score"] = 0 },
    ["kl"] = { ["index"] = 6, ["key"] = "kl", ["score"] = .4 },
    ["ef"] = { ["index"] = 3, ["key"] = "ef", ["score"] = .3 },
    ["ab"] = { ["index"] = 1, ["key"] = "ab", ["score"] = 0 },
    ["cd"] = { ["index"] = 2, ["key"] = "cd", ["score"] = .1 },
    ["gh"] = { ["index"] = 4, ["key"] = "gh", ["score"] = 0 },
    ["ij"] = { ["index"] = 5, ["key"] = "ij", ["score"] = .2 }
}

テーブルのすべての内部テーブルをT次のように並べ替えたいと思い
ます。1。上位のテーブルscoreが一番上に配置されます。
2.等しいテーブルscoreは、でソートされますindex

したがって、ソート後、次のシーケンシャルテーブルが出力に生成されます。

{
    [1] = { ["index"] = 6, ["key"] = "kl", ["score"] = .4 }, -- highest "score"
    [2] = { ["index"] = 3, ["key"] = "ef", ["score"] = .3 },
    [3] = { ["index"] = 5, ["key"] = "ij", ["score"] = .2 },
    [4] = { ["index"] = 2, ["key"] = "cd", ["score"] = .1 },
    [5] = { ["index"] = 1, ["key"] = "ab", ["score"] = 0 }, -- lowest "score", lowest "index"
    [6] = { ["index"] = 4, ["key"] = "gh", ["score"] = 0 }, -- when scores are the same, sort by their "index" instead
    [7] = { ["index"] = 7, ["key"] = "mn", ["score"] = 0 } -- lowest "score", highest "index"
}

このLuaテーブルソートを実行する方法は?

ポール・クルチェンコ

最初にハッシュをテーブルに変換してから、同じスコアを持つ要素をscore(降順)、次にindex(昇順)で並べ替えるカスタム並べ替え関数を使用して、そのテーブルの要素を並べ替える必要があります

このようなものが機能するはずです:

local hash = {
    ["mn"] = { ["index"] = 7, ["key"] = "mn", ["score"] = 0 },
    ["kl"] = { ["index"] = 6, ["key"] = "kl", ["score"] = .4 },
    ["ef"] = { ["index"] = 3, ["key"] = "ef", ["score"] = .3 },
    ["ab"] = { ["index"] = 1, ["key"] = "ab", ["score"] = 0 },
    ["cd"] = { ["index"] = 2, ["key"] = "cd", ["score"] = .1 },
    ["gh"] = { ["index"] = 4, ["key"] = "gh", ["score"] = 0 },
    ["ij"] = { ["index"] = 5, ["key"] = "ij", ["score"] = .2 }
}
local tbl = {}
for _,v in pairs(hash) do
  table.insert(tbl, v)
end
table.sort(tbl, function(a,b)
    return a.score > b.score or a.score == b.score and a.index < b.index
  end)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

インデックスによるピボット テーブルの並べ替えを回避する方法

分類Dev

ピボットテーブルに従ってDaskでインデックスを並べ替える方法

分類Dev

パンダのデータフレームをインデックスで並べ替え、次にアルファベット順に並べ替えます

分類Dev

別のテーブルのインデックスシーケンスに基づいて列の名前を並べ替える方法は?

分類Dev

Pandas でデータフレーム インデックスを並べ替え/並べ替える方法は?

分類Dev

Luaの値でテーブルを並べ替える方法は?

分類Dev

データベーステーブルアイテムの順序を並べ替える最良の方法は?

分類Dev

データフレームの列をインデックス値でアルファベット順に並べ替える方法

分類Dev

インデックス割り当てによるテーブルの並べ替え

分類Dev

アイテムのインデックスを知らずにキュー内のアイテムを並べ替える方法

分類Dev

UITableViewコンテンツ(アドレスブック)をアルファベット順に並べ替える

分類Dev

値を並べ替えて、マウスホバーでインタラクティブにする方法は?

分類Dev

値を並べ替えて、マウスホバーでインタラクティブにする方法は?

分類Dev

インデックスでPandas DataFrameを並べ替える方法

分類Dev

luaの複数の値でテーブルを並べ替える方法は?

分類Dev

パンダシリーズをデータの降順で並べ替え、次にインデックスでアルファベット順に並べ替えます。

分類Dev

文字列のリストを最初にサイズで並べ替え、次にアルファベット順に並べ替える方法

分類Dev

内部リストの特定のインデックスでリストのリストを並べ替える方法は?

分類Dev

ブートストラップデータテーブルプラグインで日付形式d / m / yを並べ替える方法は?

分類Dev

DynamoDBテーブルのセカンダリグローバルインデックスを最適化して、すべてのレコードを並べ替え可能に保ちながら、レコードが均等に分散されるようにするにはどうすればよいですか?

分類Dev

内部リストの特定のインデックスでリストのリストを並べ替える

分類Dev

パンダで特定の行インデックスを並べ替える方法

分類Dev

インデックス配列で配列を並べ替える方法は?

分類Dev

Pythonを使用して、インデックス付き列とインデックスなし列に基づいてテーブル値を並べ替える

分類Dev

クライアント側でLaravelのテーブルを並べ替え/フィルタリングするお気に入りの方法は?

分類Dev

アイテム数のインデックスと値を並べ替える最良の方法は何ですか

分類Dev

値、次にインデックスで並べ替えるパンダ

分類Dev

xarray Dataset / DataArrayのインデックスを並べ替える方法は?

分類Dev

QTableView:TableViewの入力データを行インデックス(ヘッダーインデックス-1)で並べ替える方法は?

Related 関連記事

  1. 1

    インデックスによるピボット テーブルの並べ替えを回避する方法

  2. 2

    ピボットテーブルに従ってDaskでインデックスを並べ替える方法

  3. 3

    パンダのデータフレームをインデックスで並べ替え、次にアルファベット順に並べ替えます

  4. 4

    別のテーブルのインデックスシーケンスに基づいて列の名前を並べ替える方法は?

  5. 5

    Pandas でデータフレーム インデックスを並べ替え/並べ替える方法は?

  6. 6

    Luaの値でテーブルを並べ替える方法は?

  7. 7

    データベーステーブルアイテムの順序を並べ替える最良の方法は?

  8. 8

    データフレームの列をインデックス値でアルファベット順に並べ替える方法

  9. 9

    インデックス割り当てによるテーブルの並べ替え

  10. 10

    アイテムのインデックスを知らずにキュー内のアイテムを並べ替える方法

  11. 11

    UITableViewコンテンツ(アドレスブック)をアルファベット順に並べ替える

  12. 12

    値を並べ替えて、マウスホバーでインタラクティブにする方法は?

  13. 13

    値を並べ替えて、マウスホバーでインタラクティブにする方法は?

  14. 14

    インデックスでPandas DataFrameを並べ替える方法

  15. 15

    luaの複数の値でテーブルを並べ替える方法は?

  16. 16

    パンダシリーズをデータの降順で並べ替え、次にインデックスでアルファベット順に並べ替えます。

  17. 17

    文字列のリストを最初にサイズで並べ替え、次にアルファベット順に並べ替える方法

  18. 18

    内部リストの特定のインデックスでリストのリストを並べ替える方法は?

  19. 19

    ブートストラップデータテーブルプラグインで日付形式d / m / yを並べ替える方法は?

  20. 20

    DynamoDBテーブルのセカンダリグローバルインデックスを最適化して、すべてのレコードを並べ替え可能に保ちながら、レコードが均等に分散されるようにするにはどうすればよいですか?

  21. 21

    内部リストの特定のインデックスでリストのリストを並べ替える

  22. 22

    パンダで特定の行インデックスを並べ替える方法

  23. 23

    インデックス配列で配列を並べ替える方法は?

  24. 24

    Pythonを使用して、インデックス付き列とインデックスなし列に基づいてテーブル値を並べ替える

  25. 25

    クライアント側でLaravelのテーブルを並べ替え/フィルタリングするお気に入りの方法は?

  26. 26

    アイテム数のインデックスと値を並べ替える最良の方法は何ですか

  27. 27

    値、次にインデックスで並べ替えるパンダ

  28. 28

    xarray Dataset / DataArrayのインデックスを並べ替える方法は?

  29. 29

    QTableView:TableViewの入力データを行インデックス(ヘッダーインデックス-1)で並べ替える方法は?

ホットタグ

アーカイブ