Map
List of key-value pairs. The insertion order of the key-value pairs matters.
Note: a
Mapis internally not implemented as a hash-table, so keys aren't guaranteed to be unique.
The map type syntax takes two type parameters: Map[KeyType]ValueType.
Example:
my_map = Map[String]Int{"zero": 0, "one": 1, "two": 2};
print(my_map.get("zero").show()); ... // prints "0"
Associated functions
from_data
Map[KeyType]ValueType::from_data(data: Data) -> Map[KeyType]ValueType
Getters
head
Get the key and the value of the first entry.
map.head -> (KeyType, ValueType)
head_key
Returns the key of the first entry in the Map. Throws an error if the Map is empty.
map.head_key -> KeyType
head_value
Returns the value of the first entry in the Map. Throws an error if the Map is empty.
map.head_value -> ValueType
length
Returns the number of items in a map.
map.length -> Int
tail
Returns the entries after the first entry as a new Map. Throws an error if the Map is empty.
map.tail -> Map[KeyType]ValueType
Operators
==
Map[KeyType]ValueType == Map[KeyType]ValueType -> Bool
Note: because Plutus-Core handles
Mapas a list, the entries must be in the same order for==to returntrue.
!=
Map[KeyType]ValueType != Map[KeyType]ValueType -> Bool
+
Concatenation of two maps.
Map[KeyType]ValueType + Map[KeyType]ValueType -> Map[KeyType]ValueType
Methods
all
Returns true if all map entries satisfy the predicate.
map.all(predicate: (KeyType, ValueType) -> Bool) -> Bool
any
Returns true if any map entry satisfies the predicate.
map.any(predicate: (KeyType, ValueType) -> Bool) -> Bool
delete
Removes all entries with the given key. Doesn't throw an error if the key isn't found.
map.delete(key: KeyType) -> Map[KeyType]ValueType
filter
map.filter(predicate: (KeyType, ValueType) -> Bool) -> Map[KeyType]ValueType
find
Returns the key and value of the first entry that matches the predicate. Throws an error if none found.
map.find(predicate: (KeyType, ValueType) -> Bool) -> (KeyType, ValueType)
find_safe
Returns a callback (that returns the found key-value pair) and a Bool. Calling the callback if the returned Bool is false throws an error.
map.find_safe(
predicate: (KeyType, ValueType) -> Bool
) -> (() -> (KeyType, ValueType), Bool)
find_key
Returns the first key that matches the predicate. Throws an error if none found.
map.find_key(predicate: (KeyType) -> Bool) -> KeyType
find_key_safe
Returns an Option containing the first key that matches the predicate, or Option[KeyType]::None if none found.
map.find_key_safe(predicate: (KeyType) -> Bool) -> Option[KeyType]
find_value
Returns the first value that matches the predicate. Throws an error if none found.
map.find_value(predicate: (ValueType) -> Bool) -> ValueType
find_value_safe
Returns an Option containing the first value that matches the predicate, or Option[ValueType]::None if none found.
map.find_value_safe(predicate: (ValueType) -> Bool) -> Option[ValueType]
fold
map.fold[ReducedType: Any](
reducer: (ReducedType, KeyType, ValueType) -> ReducedType,
init: ReducedType
) -> ReducedType
fold_lazy
Fold that allows breaking the loop before reaching the end of the map. Can also be used to fold from the last to the first entry of the Map instead of the other way around.
map.fold_lazy[ReducedType: Any](
reducer: (KeyType, ValueType, next: () -> ReducedType) -> ReducedType,
final: ReducedType
) -> ReducedType
for_each
Print or assert something for each map entry. Returns void.
map.for_each(fn: (key: KeyType, value: ValueType) -> ()) -> ()
get
Returns the value of the first entry in the map that matches the given key. Throws an error of the key isn't found.
map.get(key: KeyType) -> ValueType
get_safe
Returns the value of the first entry in the map that matches the given key (wrapped in an option). Returns Option[ValueType]::None if the key isn't found.
map.get_safe(key: KeyType) -> Option[ValueType]
is_empty
Returns true if the Map is empty.
map.is_empty() -> Bool
map
Creates a new Map by transforming the Map keys and values.
map.map[NewKeyType, NewValueType](
mapper: (KeyType, ValueType) -> (NewKeyType, NewValueType)
) -> Map[NewKeyType]NewValueType
prepend
Prepends a key-value pair to the beginning of the Map, creating a new Map.
map.prepend(key: KeyType, value: ValueType) -> Map[KeyType][ValueType]
serialize
map.serialize() -> ByteArray
set
Sets the first entry with given key to a new value. This entry is appended to end of the Map if the key isn't found.
map.set(key: KeyType, value: ValueType) -> Map[KeyType]ValueType
show
Returns a string representation of the map and its content. This can be useful for debugging.
map.show() -> String
sort
Sorts the map using insertion sort. The comparison function should return true if a and b are in the correct order.
map.sort(
compare: (
key_a: KeyType, value_a: ValueType,
key_b: KeyType, value_b: ValueType
) -> Bool
) -> Map[KeyType]ValueType
update
Changes the value of the first entry matching a given key. Throws an error if the key isn't found.
map.update(
key: KeyType,
n: (old_value: ValueType) -> ValueType
) -> Map[KeyType]ValueType
update_safe
Changes the values of all entries matching a given key. Doesn't throw an error if the key isn't found.
map.update_safe(
key: KeyType,
fn: (old_value: ValueType) -> ValueType
) -> Map[KeyType]ValueType