使用与值GO匹配的键对地图数组进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用与值GO匹配的键对地图数组进行排序相关的知识,希望对你有一定的参考价值。

我刚开始在Golang编程,想要对一组地图进行排序。我有一系列地图。我们称之为example_array。

example_array = [
  [
    { Name: "A", Value: 100 }, 
    { Name: "B", Value: 60 }, 
    { Name: "C", Value: 170 }, 
    { Name: "D", Value: 120} 
  ], 
  [
    { Name: "A", Value: 64 }, 
    { Name: "B", Value: 90 }, 
    { Name: "C", Value: 52 }, 
    { Name: "D", Value: 98} 
  ], 
  [
    { Name: "A", Value: 154 }, 
    { Name: "B", Value: 190 }, 
    { Name: "C", Value: 179 }, 
    { Name: "D", Value: 67 } 
  ]

]

现在我想使用键"C"的值对此数组进行排序,以便将example_array修改为 - >

[
[{Name: "A", Value: 64}, {Name: "B", Value: 90}, {Name: "C", Value: 52}, {Name: "D", Value: 98}],
[{Name: "A", Value: 100}, {Name: "B", Value: 60}, {Name: "C", Value: 170}, {Name: "D", Value: 120}], 
[{Name: "A", Value: 154}, {Name: "B", Value: 190}, {Name: "C", Value: 179}, {Name: "D", Value: 67}]
]

如果我使用键"D"的值对原始数组进行排序,则应将原始数组修改为 - >

[
[{Name: "A", Value: 154}, {Name: "B", Value: 190}, {Name: "C", Value: 179}, {Name: "D", Value: 67}],
[{Name: "A", Value: 64}, {Name: "B", Value: 90}, {Name: "C", Value: 52}, {Name: "D", Value: 98}]
[{Name: "A", Value: 100}, {Name: "B", Value: 60}, {Name: "C", Value: 170}, {Name: "D", Value: 120}]
]

如何在Golang中对这些地图数组进行排序。请帮忙!

答案

您的数据看起来很容易表示为map[string]int类型的切片。由于你没有在你的问题中提供任何Go代码,我无法确定数据类型,因此我将假设它是这个答案中map[string]int类型的一片地图。

对切​​片地图进行排序的一种简单方法是使用qazxsw poi。来自qazxsw poi的qazxsw poi包文档:

使用the sort.Slice function和自定义的Less函数,它可以作为闭包提供。在这种情况下,不需要任何方法

Less函数需要满足签名

a comment in the first example

对于sort

较少报告具有索引sort.Slice的元素是否应在具有索引func(i, j int) bool 的元素之前排序。

使用闭包允许您在函数体中引用数据结构,即使它不是参数列表的一部分。

这是一个可运行的示例,它对与您问题中的数据匹配的package documentation (at Interface)值进行排序:

i

输出:

j

以上是关于使用与值GO匹配的键对地图数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用对象的键对对象数组进行排序? [复制]

使用 std::string 作为字典顺序的键对 unordered_map 进行排序

根据php中的键对数组值进行分组?

添加键的值并按在 Python 中的字典列表中出现的键对其进行排序

通过元素指针的无序映射作为键对向量进行排序

根据键对 Python 字典进行排序? [复制]