2016-02-16 100 views

回答

5

沒有一個方便的功能,從字典中去映射,但有一個內置在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 

反向易與字典功能:

let mapToDict map = 
    map 
    |> Map.toSeq 
    |> dict 

注意上面的函數返回一個IDictionary,它的實現既在FSharp.Core庫內部,也不可變。

如果你想得到一個標準的.NET可變字典,你使用的構造函數接受IDictionaryMap implements IDictionary,所以這一步很簡單。

let mapToMutDict map = 
    map :> System.Collections.Generic.IDictionary<_,_> 
    |> System.Collections.Generic.Dictionary 
+0

謝謝。在性能方面,這些有效率還是值得注意的? –

+0

@FaguiCurtain我錯過了一個明顯的選擇去直接'字典',答案更新:)我認爲所有這些應該是相當有效的,是的。 – TheInnerLight

+0

它可以縮寫爲'Seq.map(| KeyValue |)>> Map.ofSeq'。 – Daniel

相關問題