F#将Map转换为Dict的有效方法(反之亦然)

Fag*_*ain 4 f# dictionary

我没有看到任何本机功能来从Dict转换为Map,反之亦然.(比如Map.ofDict或Dict.ofMap)(主要区别是Map是不可变的,而Dict是可变的)

我错过了什么吗?

谢谢

The*_*ght 9

从字典到映射没有方便的功能,但有一个内置dict函数可以从一系列元组转换为一个IDictionary<'a,'b>,参见:https://msdn.microsoft.com/en-us/library/ee353774. aspx.

我知道做字典映射转换的最简单方法是:

let dictToMap (dic : System.Collections.Generic.IDictionary<_,_>) = 
    dic 
    |> Seq.map (|KeyValue|)  
    |> Map.ofSeq
Run Code Online (Sandbox Code Playgroud)

使用dict函数很容易:

let mapToDict map =
    map 
    |> Map.toSeq
    |> dict
Run Code Online (Sandbox Code Playgroud)

注意,上面的函数返回一个IDictionary,其实现既是FSharp.Core库的内部,也不是可变的.

如果你想要一个标准的.NET可变字典,你可以使用接受一个IDictionary,Map实现的构造函数,IDictionary所以这个步骤非常简单.

let mapToMutDict map =
    map :> System.Collections.Generic.IDictionary<_,_>
    |> System.Collections.Generic.Dictionary
Run Code Online (Sandbox Code Playgroud)