托卢库普的F#等价物

托卢库普的F#等价物,f#,lookup,F#,Lookup,鉴于此: [ ("A","A122"); ("A","A123"); ("B","B122"); ("B","B123"); ("C","C122"); ] 有没有一个标准的函数来获取这个 [ ("A",["A122";"A123"]); ("B",["B122";"B123"]); ("C",["C122"]) ] 我想到了Seq.distinctBy、List.partition、Set、Map,但它们似乎都不是我想要的 谢

鉴于此:

[
    ("A","A122");
    ("A","A123");
    ("B","B122");
    ("B","B123");
    ("C","C122");
]
有没有一个标准的函数来获取这个

[
    ("A",["A122";"A123"]);
    ("B",["B122";"B123"]);
    ("C",["C122"])
]
我想到了Seq.distinctBy、List.partition、Set、Map,但它们似乎都不是我想要的


谢谢。。。在我等待的时候,我会试着自己滚:)

傻我,我没有注意到Seq.groupBy

[
    ("A","A122");
    ("A","A123");
    ("B","B122");
    ("B","B123");
    ("C","C122");
]
 |> Seq.groupBy (fun (a, b) -> a)
 |> Seq.map (fun (a, b) -> (a, Seq.map snd b))
输出:

seq
[("A", seq ["A122"; "A123"]); ("B", seq ["B122"; "B123"]);
 ("C", seq ["C122"])]
对于O(1)查找:


如果希望获得ILookup的高效O(logn)查找性能,您可能希望使用Map.ofSeq创建映射
[
    ("A","A122");
    ("A","A123");
    ("B","B122");
    ("B","B123");
    ("C","C122");
]
|> Seq.groupBy fst
|> dict