stringの配列からDictionaryへの変換をやってみた

なんとなくやってみました。

元ネタ

C#

LINQワンライナーで書くより変数で受けるのが好みです。

var arr = new[] {"1", "one", "2", "two"};
var keys = arr.Where((_, i) => i % 2 == 0);
var values = arr.Where((_, i) => i % 2 == 1);
var pairs = keys.Zip(values, (k, v) => new { k, v });
var dictionary = pairs.ToDictionary(p => p.k, p => p.v);
F#

Seq.pairwiseが適しているかも。

let arr = [|"1"; "one"; "2"; "two"|]
let dictionary =
  arr
  |> Seq.pairwise
  |> Seq.mapi (fun i pair -> i, pair)
  |> Seq.choose (fun (i, pair) -> if i % 2 = 0 then Some pair else None)
  |> dict