我有这个C#示例,它将从整数数组创建奇数和偶数的字典:
int[] values = new int[]
{
1,
2,
3,
5,
7
};
Dictionary<int, string> dictionary =
values.ToDictionary(key => key, val => (val % 2 == 1) ? "Odd" : "Even");
// Display all keys and values.
foreach (KeyValuePair<int, string> pair in dictionary)
{
Console.WriteLine(pair);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
[1, Odd]
[2, Even]
[3, Odd]
[5, Odd]
[7, Odd]
Run Code Online (Sandbox Code Playgroud)
我希望在F#中使用ToDictionary类似地执行此操作,并且到目前为止这样做:
let values = [| 1; 2; 3; 5; 7 |]
let dictionary = values.ToDictionary( ??? )
// Display all keys and values.
for d in dictionary do
printfn "%d %s" d.Key d.Value
Run Code Online (Sandbox Code Playgroud)
但是我如何在ToDictionary中编写逻辑?
Tom*_*cek 12
您当然可以使用ToDictionary
F#中的(以及所有其他LINQ方法),但有时使用F#库中的函数更为惯用.
如果我想要创建这个字典,我会使用这样的东西:
let values = [| 1; 2; 3; 5; 7 |]
let dictionary = dict [ for v in values -> v, if v % 2 = 1 then "Odd" else "Even" ]
Run Code Online (Sandbox Code Playgroud)
这dict
是一个F#库函数,它从包含键和值的元组创建一个字典(元组是使用创建的,
,所以我们v
用作键,字符串作为值).
像这样:
ToDictionary(id, fun v -> if v % 2 = 1 then "Odd" else "Even")
Run Code Online (Sandbox Code Playgroud)