Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 根据值的出现次数对切片进行排序_Sorting_Go_Slice - Fatal编程技术网

Sorting 根据值的出现次数对切片进行排序

Sorting 根据值的出现次数对切片进行排序,sorting,go,slice,Sorting,Go,Slice,请看。我有一个切片和一些数据。现在我想对这个切片进行排序,但不是根据其中一个值内的值,而是根据其中一个值的出现次数对其进行排序 不幸的是,我不知道如何解决这个问题。有人能给我指一下正确的方向吗 我知道我能做到: sort.Slice(messages, func(i, j int) bool { return messages[i].SupplierID < messages[j].SupplierID }) sort.Slice(消息,func(i,j int)bool{ 返回

请看。我有一个切片和一些数据。现在我想对这个切片进行排序,但不是根据其中一个值内的值,而是根据其中一个值的出现次数对其进行排序

不幸的是,我不知道如何解决这个问题。有人能给我指一下正确的方向吗

我知道我能做到:

sort.Slice(messages, func(i, j int) bool {
    return messages[i].SupplierID < messages[j].SupplierID
})
sort.Slice(消息,func(i,j int)bool{
返回消息[i]。供应商ID<消息[j]。供应商ID
})

这将对切片进行排序,但它将从“最高”供应商ID开始。但我想要的是根据出现的次数进行排序:首先是具有供应商ID租约号的部分。

迭代切片,填充出现的映射,然后根据出现的次数对切片进行排序:

supplierCounts := make(map[int]int)
for _, msg := range messages {
    supplierCounts[msg.SupplierID]++
}

sort.Slice(messages, func(i, j int) bool {
    return supplierCounts[messages[i].SupplierID] < supplierCounts[messages[j].SupplierID]
})
supplierCounts:=make(映射[int]int)
对于u,msg:=范围消息{
供应商数量[msg.SupplierID]++
}
sort.Slice(消息,func(i,j int)bool{
返回supplierCounts[messages[i].SupplierID]

迭代切片,填充引用的映射,然后根据引用的数量对切片进行排序:

supplierCounts := make(map[int]int)
for _, msg := range messages {
    supplierCounts[msg.SupplierID]++
}

sort.Slice(messages, func(i, j int) bool {
    return supplierCounts[messages[i].SupplierID] < supplierCounts[messages[j].SupplierID]
})
supplierCounts:=make(映射[int]int)
对于u,msg:=范围消息{
供应商数量[msg.SupplierID]++
}
sort.Slice(消息,func(i,j int)bool{
返回supplierCounts[messages[i].SupplierID]