F# 相当于 toLookup

标签 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,但似乎都不是我要找的。

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

最佳答案

愚蠢的我,我没有注意到 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"])]

关于F# 相当于 toLookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471316/

相关文章:

f# - 64 位 F#/FSI : Limitation of very large single file function

f# - Erlang 替代 f# 序列

.net - 默认情况下,F# 是否在内部使代码并行运行?

c++ - 将函数查找与 C++ 中的模板混淆

mysql - 每天至少有 # 条合格行的所有行

javascript - "Join"两个数组

.net - 将 MethodImplOptions.AggressiveInlining 应用于 F# 函数

haskell - F# 中的变质

python - 根据特定行和列值的引用表填充数据框表中的 NaN 单元格

apache-spark - Spark 中查找和联接之间的区别