aerospike.KeyOrderedDict
— KeyOrderedDict Class
- class aerospike.KeyOrderedDict
The KeyOrderedDict class is a dictionary that directly maps to a key ordered map on the Aerospike server. This assists in matching key ordered maps through various read operations. See the example snippet below.
import aerospike
from aerospike_helpers.operations import map_operations as mop
from aerospike_helpers.operations import list_operations as lop
import aerospike_helpers.cdt_ctx as ctx
from aerospike import KeyOrderedDict
config = { 'hosts': [ ("localhost", 3000), ] }
client = aerospike.client(config).connect()
map_policy={'map_order': aerospike.MAP_KEY_VALUE_ORDERED}
key = ("test", "demo", 100)
client.put(key, {'map_list': []})
map_ctx1 = ctx.cdt_ctx_list_index(0)
map_ctx2 = ctx.cdt_ctx_list_index(1)
map_ctx3 = ctx.cdt_ctx_list_index(2)
my_dict1 = {'a': 1, 'b': 2, 'c': 3}
my_dict2 = {'d': 4, 'e': 5, 'f': 6}
my_dict3 = {'g': 7, 'h': 8, 'i': 9}
ops = [
lop.list_append_items('map_list', [my_dict1, my_dict2, my_dict3]),
mop.map_set_policy('map_list', map_policy, [map_ctx1]),
mop.map_set_policy('map_list', map_policy, [map_ctx2]),
mop.map_set_policy('map_list', map_policy, [map_ctx3])
]
client.operate(key, ops)
_, _, res = client.get(key)
print(res)
element = KeyOrderedDict({'f': 6, 'e': 5, 'd': 4}) # this will match my_dict2 because it will be converted to key ordered.
ops = [
lop.list_get_by_value('map_list', element, aerospike.LIST_RETURN_COUNT)
]
_, _, res = client.operate(key, ops)
print(res)
client.remove(key)
client.close()
# EXPECTED OUTPUT:
# {'map_list': [{'a': 1, 'b': 2, 'c': 3}, {'d': 4, 'e': 5, 'f': 6}, {'g': 7, 'h': 8, 'i': 9}]}
# {'map_list': 1}
KeyOrderedDict inherits from dict
and has no extra functionality.
The only difference is its mapping to a key ordered map.