我沒有看到任何本地函數可以將Dict轉換爲Map,反之亦然。 (類似Map.ofDict或Dict.ofMap) (主要區別是Map是不可變的,而Dict是可變的)F#將Map轉換爲Dict的有效方式(反之亦然)
我錯過了什麼嗎?
感謝
我沒有看到任何本地函數可以將Dict轉換爲Map,反之亦然。 (類似Map.ofDict或Dict.ofMap) (主要區別是Map是不可變的,而Dict是可變的)F#將Map轉換爲Dict的有效方式(反之亦然)
我錯過了什麼嗎?
感謝
沒有一個方便的功能,從字典中去映射,但有一個內置在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可變字典,你使用的構造函數接受IDictionary
,Map
implements IDictionary
,所以這一步很簡單。
let mapToMutDict map =
map :> System.Collections.Generic.IDictionary<_,_>
|> System.Collections.Generic.Dictionary
謝謝。在性能方面,這些有效率還是值得注意的? –
@FaguiCurtain我錯過了一個明顯的選擇去直接'字典',答案更新:)我認爲所有這些應該是相當有效的,是的。 – TheInnerLight
它可以縮寫爲'Seq.map(| KeyValue |)>> Map.ofSeq'。 – Daniel
而'Dict'是指'Dictionary'? –
MarcinJuraszek