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]