为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 go lang 中对 map[string]interface{} 类型进行多重排序?

如何在 go lang 中对 map[string]interface{} 类型进行多重排序?

Go
温温酱 2021-09-27 18:32:11
场景:考虑我在去朗现在我要处理的JSON数据现在用map[string]interface{}使用的封装类型encoding/json做marshal/unmarshal以下是 JSON 数据:{    "MysoreCity": {        "Population": 1000,        "VehicleCount": 1700,        "Temperature": 33    },    "BangaloreCity": {        "Population": 1000,        "VehicleCount": 3500,        "Temperature": 33    },    "KolarCity": {        "Population": 1250,        "VehicleCount": 3500,        "Temperature": 31    },    "TumkurCity": {        "Population": 800,        "VehicleCount": 300,        "Temperature": 29    }}现在我想根据优先级执行多排序降序,比如优先级是Temperature, Population,VehicleCount然后我希望输出像{    "BangaloreCity": {        "Population": 1000,        "VehicleCount": 3500,        "Temperature": 33    },    "MysoreCity": {        "Population": 1000,        "VehicleCount": 1700,        "Temperature": 33    },    "KolarCity": {        "Population": 1250,        "VehicleCount": 3500,        "Temperature": 31    },    "TumkurCity": {        "Population": 800,        "VehicleCount": 300,        "Temperature": 29    }}因此,根据一些动态的优先级集进行排序。问题:我没有得到任何关于如何在 go lang 中对其进行排序的线索。我是 lang 新手,在搜索对我的数据进行排序时发现了一些东西;如下所述(来源:链接)使用范围循环遍历地图时,未指定迭代顺序,并且不能保证从一次迭代到下一次迭代顺序相同。问题:谁能解释一下如何使用类似的 JSON 数据进行这种排序?
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

我做了这个函数从 N 个映射和它的排序键中获取结果映射。


func getSortedKeys(maps ...map[string]string) (map[string]string, []string) {

    var keys []string

    resultMap := map[string]string{}


    for _, currMap := range maps {

        for k, v := range currMap {

            resultMap[k] = v

            keys = append(keys, k)

        }

    }

    sort.Strings(keys)

    return resultMap, keys


}

在函数之外,您可以执行以下操作:


  concatenedMaps, keys := getSortedKeys(map1,map2)

  for _, k := range keys {

        value := concatenedMaps[k]

  }


查看完整回答
反对 回复 2021-09-27
  • 2 回答
  • 0 关注
  • 436 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信