這個問題在這里已經有了答案: 如何按其值對 Map[string]int 進行排序? (6 個回答) 如何按順序遍歷Golang中的地圖? (5 個回答) 4 小時前關閉。
如何從最高值到最低值對以下內容進行排序?
map[abc:1.4 def:0.2 ghi:3]
uj5u.com熱心網友回復:
在 Go 地圖中沒有順序。如果您在任何地圖上進行范圍,您將獲得隨機順序的專案。您只能訂購一片。但是 slices 的 key 是一個整數,所以如果你需要一個有序的 key-value 對,你可以創建一個 struct 并創建一個 slice,然后對其進行排序。像這樣的東西:
package main
import (
"fmt"
"golang.org/x/exp/slices"
)
func main() {
type item struct {
Key string
Value float64
}
items := []item{item{"abc", 1.4}, item{"def", 0.2}, item{"abc", 3}}
fmt.Println("Before", items)
slices.SortFunc(items, func(a, b item) bool {
return a.Value < b.Value
})
fmt.Println("After", items)
}
操場
uj5u.com熱心網友回復:
Amap是鍵/值對的哈希表。它可以通過密鑰直接訪問。對映射的鍵、值或鍵/值對的迭代雖然不是隨機的,但不確定:順序取決于將鍵/值對添加到映射中的順序。
因此,出于所有意圖和目的,地圖是無序的。
如果您想以某種順序迭代地圖,您有兩種選擇:
維護按所需順序排列的地圖、鍵的并行排序串列,或
獲取地圖包含的鍵串列,按所需順序對其進行排序并使用它。
前者的優點是,雖然在地圖中插入/洗掉/更新專案時維護并行資料結構會產生一些開銷,但您始終可以通過并行資料結構按順序訪問地圖。
后者的優點是沒有額外的開銷,每次您想要按順序迭代映射時,無需對鍵串列進行排序。缺點是排序鍵串列的成本:如果地圖很大,排序的成本可能會很大。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/480565.html
上一篇:C#-13 泛型
