我没有看到任何原生函数从Dict转换为Map,反之亦然。 (比如Map.ofDict或Dict.ofMap) (主要区别是Map是不可变的,而Dict是可变的)
我错过了什么吗?
感谢
答案 0 :(得分:7)
从字典到地图没有方便的功能,但有一个内置的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
使用dict函数可以很容易地反过来:
let mapToDict map =
map
|> Map.toSeq
|> dict
请注意,上面的函数返回IDictionary
,其实现既是FSharp.Core库的内部,也不是可变的。
如果你想获得一个标准的.NET可变字典,你可以使用接受IDictionary
,Map
实现IDictionary
的构造函数,所以这一步非常简单。
let mapToMutDict map =
map :> System.Collections.Generic.IDictionary<_,_>
|> System.Collections.Generic.Dictionary