dictionary - 在 fsharp 中交换映射中的键和值

标签 dictionary f# functional-programming swap

如何创建一个与原始 map 类似但在 Fsharp 中交换键和值的新 map ?
例如,我有这个

let map1 =
[("A", "1"); ("B", "2"); ("C", "3");]
|> Map.ofList

并想得到这个:
let map2 =
[("1", "A"); ("2", "B"); ("3", "C");]
|> Map.ofList

感谢您的帮助!

最佳答案

也许你会接近这个决定:

let map1 = Map.ofList [("A", "1"); ("B", "2"); ("C", "3")]

map1 |> printfn "%A"

let rev map: Map<string,string> = 
      Map.fold (fun m key value -> m.Add(value,key)) Map.empty map

rev map1 |> printfn "%A"

打印:
map [("A", "1"); ("B", "2"); ("C", "3")]
map [("1", "A"); ("2", "B"); ("3", "C")]

链接:http://ideone.com/cfN2yH

关于dictionary - 在 fsharp 中交换映射中的键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258611/

相关文章:

python - 使用带 while 循环的字典

python - 从列表python中的字典内的值减去

c++ - 如何在 C++ 错误 C2338 中组织 map<set<multiset<int>>,int>

复杂 json 上的 Json.net JObject.Parse 错误

c++ - 如何绕过 C++ 无法使用 lambda 匹配模板中的函数类型

php - 如何在 openstreetmap 中从 map 外部打开标记?

f# - 使用 FSharp 中的 Task.FromResult(0)

f# - 在 F# 中从 C# 格式化流利/方法链接代码

algorithm - 是否有快速、实用的素数生成器?

java - 如何迭代谓词列表