2

鉴于这种:

[
    ("A","A122");
    ("A","A123");
    ("B","B122");
    ("B","B123");
    ("C","C122");
]

有没有标准功能来获得这个?

[
    ("A",["A122";"A123"]);
    ("B",["B122";"B123"]);
    ("C",["C122"])
]

我想到了 Seq.distinctBy、List.partition、Set、Map,但它们似乎都不是我想要的。

谢谢...在我等待的时候,我会尝试自己动手:)

4

2 回答 2

7

愚蠢的我,我没有注意到 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"])]
于 2009-09-24T12:25:32.747 回答
1

对于 O(1) 查找:

[
    ("A","A122");
    ("A","A123");
    ("B","B122");
    ("B","B123");
    ("C","C122");
]
|> Seq.groupBy fst
|> dict
于 2018-09-18T16:52:06.967 回答