Using Bijections
Adding and deleting key/value pairs
Once a Bijection, b, is created, we add a new key-value pair in the same manner as with a Dict:
julia> b = Bijection{Int, String}();julia> b[1] = "hello""hello"julia> b[2] = "bye""bye"
Notice, however, that if we add a new key with a value that already exists in the Bijection an error ensues:
julia> b[3] = "hello"ERROR: ArgumentError: inserting 3 => hello would break bijectiveness
On the contrary, if a key already has a value it can be changed by giving it a new value as long as it doesn't break bijectiveness (i.e. the new value is not already in the Bijection):
julia> b[1] = "ciao""ciao"
Accessing values from keys, and keys from values
To access a value associated with a given key, we use the same syntax as for a Dict:
julia> b[1]"ciao"julia> b[2]"bye"
If the key is not in the Bijection an error is raised:
julia> b[3]ERROR: KeyError: key 3 not found
Since the values in a Bijection must be distinct, we can give a value as an input and retrieve its associate key. The function inverse(b,y) finds the value x such that b[x]==y. However, we provide the handy short cut b(y):
julia> b("bye")2julia> b("ciao")1
Naturally, if the requested value is not in the Bijection an error is raised:
julia> b("hello")ERROR: KeyError: key "hello" not found
In order to access the domain and image sets of the Bijection, one can use the Base.keys and Base.values functions.
julia> keys(b)KeySet for a Dict{Int64, String} with 2 entries. Keys: 2 1julia> values(b)ValueIterator for a Dict{Int64, String} with 2 entries. Values: "bye" "ciao"
The collect function returns the Bijection as an array of key-value pairs:
julia> collect(b)2-element Vector{Pair{Int64, String}}: 2 => "bye" 1 => "ciao"
The length function returns the number of key-value pairs:
julia> length(b)2
The isempty function returns true exactly when the Bijection contains no pairs:
julia> isempty(b)false