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

如何使用 Golang 计算地图中某个值的出现次数?

如何使用 Golang 计算地图中某个值的出现次数?

Go
桃花长相依 2023-06-19 11:13:54
我创建了一个具有以下结构的地图:m := make(map[int]Record)Record 是一个结构,如下所示:type Record struct {     UID  int     Type string     Year string}SumRecord 结构应该存储有关映射 m 中每个给定类型/年份值的出现次数的信息。type SumRecord struct {     Sum  int     Type string     Year string}该结构应该保存有关书籍出版年份的信息,即{1, "Type": "fiction", "Year": 1996}, {2, "Type": "non-fiction", "Year": 1996}我试图创建第二张地图但没有成功,我将在其中存储每年每种出版物类型的总和(类似于 SQL 中的 SUM / GROUP BY)。我怎样才能用 Go 实现它?
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这将创建 SumRecord 到整数的新映射,表示该特定类型/年份分组的出现次数总和。

type Record struct {

    UID  int

    Type string

    Year string

}


type SumRecord struct {

    Type string

    Year string

}


m := make(map[int]Record)


// e.g. [{"1996","non-fiction"}:4], representing 4 occurrences of {"1996","non-fiction"}

srMap := make(map[SumRecord]int)


// add records


// loop over records

for key := range m {

    sr := SumRecord{

        Type: m[key].Type,

        Year: m[key].Year,

    }

    // creates new counter or increments existing pair counter by 1

    srMap[sr] += 1

}

// print all mappings

fmt.Println(srMap)


// specific example

fmt.Println(srMap[SumRecord{

    Year: "1996",

    Type: "non-fiction",

}])


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

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