--- name: CountValuesBy slug: countvaluesby sourceRef: it/seq.go#L720 category: it subCategory: slice signatures: - "func CountValuesBy[T any, U comparable](collection iter.Seq[T], transform func(item T) U) map[U]int" playUrl: https://go.dev/play/p/gnr_MPhYCHX variantHelpers: [] similarHelpers: - core#slice#countvaluesby position: 204 --- CountValuesBy counts the number of each element returned from transform function. Is equivalent to chaining Map and CountValues. ```go type Person struct { Name string Age int } collection := func(yield func(Person) bool) { yield(Person{"Alice", 25}) yield(Person{"Bob", 30}) yield(Person{"Charlie", 25}) yield(Person{"Diana", 30}) } countsByAge := it.CountValuesBy(collection, func(p Person) int { return p.Age }) // countsByAge contains {25: 2, 30: 2} ```