I have a map X and I'm trying to get a set of the keys satisfying a certain condition, something like this:
Map.Keys X |> Set.filter (fun x -> ...)
...but I cannot find the way to get the keys from F#'s Map collection.
HashMap put() Method in Java put() method of HashMap is used to insert a mapping into a map. This means we can insert a specific key and the value it is mapping to into a particular map.
A map key is an inset on a map that explains the symbols, provides a scale, and usually identifies the type of map projection used. Technically, the key is part of the map legend. The key explains the symbols, while the legend holds the key and other information.
A special case of this prohibition is that it is not permissible for a map to contain itself as a key. While it is permissible for a map to contain itself as a value, extreme caution is advised: the equals and hashCode methods are no longer well defined on a such a map.
Convert your map to sequence of tuples (key,value)
first and then map it to a sequence of just keys:
map |> Map.toSeq |> Seq.map fst
FSI sample:
>Map.ofList[(1,"a");(2,"b")] |> Map.toSeq |> Seq.map fst;; val it : seq<int> = seq [1; 2]
Or alternatively, as ordering of keys likely does not matter you may use more eager method returning the list
of all keys. It is also not hard to make it into extension method keys
of Microsoft.FSharp.Collections.Map
module:
module Map = let keys (m: Map<'Key, 'T>) = Map.fold (fun keys key _ -> key::keys) [] m
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With