托卢库普的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