golang mapキー値交換
1829 ワード
mapキー値交換
まず考えられる方法は,元のmapのkeyをvalueとし,元のmap valueをkeyとする別のmapを構築し,その後for-rangeで元のmapを遍歴して新しいmapを導入することである.
v 1版
しかし、上記のコードには大きな問題があり、元のmapの値が一意でないと、新しいmapが元のmapのキー値ペアを完全に含むことができなくなります.この問題は多値mapで解決できる.
v 2版
まず考えられる方法は,元のmapのkeyをvalueとし,元のmap valueをkeyとする別のmapを構築し,その後for-rangeで元のmapを遍歴して新しいmapを導入することである.
v 1版
var (
o = map[string]int{"a": 0, "b": 0, "c": 2}
)
func main() {
fmt.Println(o)
n := map[int]string{}
for k, v := range o {
n[v] = k
}
fmt.Println(n)
}
しかし、上記のコードには大きな問題があり、元のmapの値が一意でないと、新しいmapが元のmapのキー値ペアを完全に含むことができなくなります.この問題は多値mapで解決できる.
v 2版
var (
o = map[string]int{"a": 0, "b": 0, "c": 2}
)
func main() {
fmt.Println(o)
n := map[int][]string{}
for k, v := range o {
n[v] = append(n[v], k)
}
fmt.Println(n)
}