如何根據鍵或值對 Go 語言 Map 進行排序?
Go 是一種強大的程式語言,它內建支援 map。Map 是鍵值對的無序集合,有時需要根據鍵或值對它們進行排序。幸運的是,Go 提供了一種使用 sort 包根據鍵和值對 map 進行排序的方法。在本文中,我們將討論如何根據鍵或值對 Golang map 進行排序。
根據鍵對 Golang Map 進行排序
要根據鍵對 Golang map 進行排序,我們首先需要從 map 中提取鍵並使用 sort 包對它們進行排序。然後,我們可以遍歷排序後的鍵並從 map 中檢索其對應的值。
示例
以下是如何根據鍵對 Golang map 進行排序的示例:
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string]int{
"foo": 2,
"bar": 1,
"baz": 3,
}
// Extract keys from map
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
// Sort keys
sort.Strings(keys)
// Print sorted map
for _, k := range keys {
fmt.Printf("%s: %d\n", k, m[k])
}
}
輸出
bar: 1 baz: 3 foo: 2
在上面的示例中,我們建立了一個具有字串鍵和整數值的 map。然後,我們從 map 中提取鍵並使用 sort.Strings() 函式對它們進行排序。最後,我們遍歷排序後的鍵並打印出 map 中對應的值。
根據值對 Golang Map 進行排序
要根據值對 Golang map 進行排序,我們需要建立一個鍵值對的切片並根據值對其進行排序。然後,我們可以從切片中提取排序後的鍵。
示例
以下是如何根據值對 Golang map 進行排序的示例:
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string]int{
"foo": 2,
"bar": 1,
"baz": 3,
}
// Create slice of key-value pairs
pairs := make([][2]interface{}, 0, len(m))
for k, v := range m {
pairs = append(pairs, [2]interface{}{k, v})
}
// Sort slice based on values
sort.Slice(pairs, func(i, j int) bool {
return pairs[i][1].(int) < pairs[j][1].(int)
})
// Extract sorted keys
keys := make([]string, len(pairs))
for i, p := range pairs {
keys[i] = p[0].(string)
}
// Print sorted map
for _, k := range keys {
fmt.Printf("%s: %d\n", k, m[k])
}
}
輸出
bar: 1 foo: 2 baz: 3
在上面的示例中,我們建立了一個具有字串鍵和整數值的 map。然後,我們建立了一個鍵值對的切片並使用 sort.Slice() 函式和自定義的 less 函式根據值對其進行排序。最後,我們從切片中提取排序後的鍵並打印出 map 中對應的值。
結論
使用 sort 包,根據鍵或值對 Golang map 進行排序很容易。透過提取和排序鍵或建立鍵值對的切片並根據值對其進行排序,您可以按升序或降序對 map 進行排序。
廣告
資料結構
網路
關係型資料庫
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP