代码之家  ›  专栏  ›  技术社区  ›  Daniel F

迭代字符串对数组以创建映射[重复]

go
  •  -2
  • Daniel F  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有一个字符串数组,其长度总是2的倍数。

    我想用这个数组创建一个映射,这样

    myarr = ["key1", "val1", "key2", "val2", ...]
    

    变成一张地图

    mymap := mapify(myarr)
    mymap['key1'] == "val1"
    mymap['key2'] == "val2"
    

    在python中,我可以使用以下代码来完成这项工作

    mymap = {}
    for x, y in zip(*[iter(myarr)]*2):
      mymap[x] = y
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Ullaakut    6 年前

    您可以编写自己的函数,如下所示:

    package main
    
    import (
        "fmt"
    )
    
    var myarr = []string{"key1", "val1", "key2", "val2"}
    
    func mapify(kv []string) map[string]string {
        mymap := make(map[string]string)
    
        for i := 0; i+1 <= len(kv); i = i + 2 {
            mymap[kv[i]] = kv[i+1]
        }
    
        return mymap
    }
    
    func main() {
        fmt.Println(myarr)
        fmt.Println(mapify(myarr))
    }
    

    输出

    [key1 val1 key2 val2]
    map[key1:val1 key2:val2]
    

    Try it here