If I understand correctly, you have two main operations: given a new (p,v), where p=price and v=volume, you want to insert this into the sorted dict. If there is already (p,v’) in the sorted dict (same p), then instead you wish to update (p,v’) to (p,v+v’)…

The other operation is, given a volume V, you want to find and delete pairs (p,v) starting from lowest to highest p, until the sequence of v’s removed adds up to V.

Both of these are possible with SortedDict. For the first operation, you `find`

p; if found under semitoken s, then you update sd[s], and if not found, the you `push!`

or `insert!`

the new item. For the second operation, you use a while-loop with the `startof`

function and `delete!`

function.

Your username ‘femtotrader’ suggests that you are interested in high-performance software for use in high-speed financial trades. In this case, you should know that `SortedDict`

in Julia is not as fast as `map`

in C++, primarily because the latter has no safeguards or error-checks, at least when used in the default way.