Logo

Programming-Idioms

History of Idiom 113 > diff from v2 to v3

Edit summary for version 3 by :
[Go] Missing part at the end of the code

Version 2

2016-01-05, 00:33:14

Version 3

2016-01-05, 00:35:54

Idiom #113 Iterate over map entries, ordered by values

Print each key k with its value x from an associative array mymap, in ascending order of x.
Note that multiple entries may exist for the same value x.

Idiom #113 Iterate over map entries, ordered by values

Print each key k with its value x from an associative array mymap, in ascending order of x.
Note that multiple entries may exist for the same value x.

Imports
import "fmt"
import "sort"
Imports
import "fmt"
import "sort"
Code
type entry struct {
	key   string
	value int
}

type entries []entry
func (list entries) Len() int           { return len(list) }
func (list entries) Less(i, j int) bool { return list[i].value < list[j].value }
func (list entries) Swap(i, j int)      { list[i], list[j] = list[j], list[i] }

entries := make(entries, 0, len(mymap))
for k, v := range mymap {
	entries = append(entries, entry{k, v})
}
sort.Sort(entries)

for _, e := range entries {
		fmt.Println("Key =", e.key, ", Value =", e.value)
Code
type entry struct {
	key   string
	value int
}

type entries []entry
func (list entries) Len() int { return len(list) }
func (list entries) Less(i, j int) bool { return list[i].value < list[j].value }
func (list entries) Swap(i, j int) { list[i], list[j] = list[j], list[i] }

entries := make(entries, 0, len(mymap))
for k, v := range mymap {
	entries = append(entries, entry{k, v})
}
sort.Sort(entries)

for _, e := range entries {
	fmt.Println("Key =", e.key, ", Value =", e.value)
}
Comments bubble
Define custom types entry and entries. Then create a flat list of entries, and sort it.
Comments bubble
Define custom types entry and entries.
Then create a flat list of entries, and sort it.
Demo URL
http://play.golang.org/p/6o--5mK_xR
Demo URL
http://play.golang.org/p/6o--5mK_xR