かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

stringの配列からDictionaryへの変換 その3

id:neueccさんが、もう1つやり方を教えてくれました。自分では思いつきませんでしたが、以下のコードになります。

var array = new[] { "1", "one", "2", "two" };
var dict = array
	.Zip(array.Skip(1), Tuple.Create)
	.Where((_, i) => i % 2 == 0)
	.ToDictionary(
		v => v.Item1,
		v => v.Item2);

1つ要素をずらした自分自身と結合して絞り込んでDictionaryへ変換・・・。という感じです。なるほど!!

ちょっと様子を追ってみると・・・Zipメソッドの所で以下のようなTupleが作られます。

Item1 Item2
1 one
one 2
2 two

奇数行は、不要なデータなのでWhereで絞り込みます。

Item1 Item2
1 one
2 two

あとはItem1をキーに、Item2を値にしたDictionaryに変換って寸法です。頭やわらかくしないとだな〜。関数脳になりたい。