OrderedMap is a Python port of OrderedDict implemented in golang. Golang's builtin map purposefully randomizes the iteration of stored key/values. OrderedMap struct preserves inserted key/value pairs; such that on iteration, key/value pairs are received in inserted (first in, first out) order.
- Full support Key/Value for all data types
- Exposes an Iterator that iterates in order of insertion
- Full Get/Set/Delete map interface
- Supports Golang v1.3 through v1.19
go get https://github.com/cevaris/ordered_map.git
package main
import (
"fmt""github.com/cevaris/ordered_map"
)
funcmain() {
// Init new OrderedMapom:=ordered_map.NewOrderedMap()
// Set keyom.Set("a", 1)
om.Set("b", 2)
om.Set("c", 3)
om.Set("d", 4)
// Same interface as builtin mapifval, ok:=om.Get("b"); ok==true {
// Found key "b"fmt.Println(val)
}
// Delete a keyom.Delete("c")
// Failed Get lookup becase we deleted "c"if_, ok:=om.Get("c"); ok==false {
// Did not find key "c"fmt.Println("c not found")
}
fmt.Println(om)
}n:=100om:=ordered_map.NewOrderedMap()
fori:=0; i<n; i++ {
// Insert data into OrderedMapom.Set(i, fmt.Sprintf("%d", i*i))
}
// Iterate though values// - Values iteration are in insert order// - Returned in a key/value pair structiter:=om.IterFunc()
forkv, ok:=iter(); ok; kv, ok=iter() {
fmt.Println(kv, kv.Key, kv.Value)
}om:=ordered_map.NewOrderedMap()
om.Set("one", &MyStruct{1, 1.1})
om.Set("two", &MyStruct{2, 2.2})
om.Set("three", &MyStruct{3, 3.3})
fmt.Println(om)
// Ouput: OrderedMap[one:&{1 1.1}, two:&{2 2.2}, three:&{3 3.3}, ]Git clone project
git clone https://github.com/cevaris/ordered_map.git
Build and install project
make
Run tests
make test