1. 程式人生 > >將 map 的鍵值對調

將 map 的鍵值對調

這裡對調是指調換 key 和 value。如果 map 的值型別可以作為 key 且所有的 value 是唯一的,那麼通過下面的方法可以簡單的做到鍵值對調。

package main
import (
    "fmt"
)

var (
    barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
                            "delta": 87, "echo": 56, "foxtrot": 12,
                            "golf": 34, "hotel"
: 16, "indio": 87, "juliet": 65, "kili": 43, "lima": 98} ) func main() { invMap := make(map[int]string, len(barVal)) for k, v := range barVal { invMap[v] = k } fmt.Println("inverted:") for k, v := range invMap { fmt.Printf("Key: %v, Value: %v / "
, k, v) } }

輸出結果:

inverted:
Key: 34, Value: golf / Key: 23, Value: charlie / Key: 16, Value: hotel / Key: 87, Value: delta / Key: 98, Value: lima / Key: 12, Value: foxtrot / Key: 43, Value: kili / Key: 56, Value: bravo / Key: 65, Value: juliet /

如果原始 value 值不唯一那麼這麼做肯定會出錯;為了保證不出錯,當遇到不唯一的 key 時應當立刻停止,這樣可能會導致沒有包含原 map 的所有鍵值對!一種解決方法就是仔細檢查唯一性並且使用多值 map,比如使用 map[int][]string 型別。

轉載地址