使用与值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 进行排序