3

C# では、Dictionary<string, List<string>>かなり簡単にビルドできました。アイテムの大規模なデータベースを読んでいた場合、次のことができます。

var dict = new Dictionary<string, List<string>>();
foreach(string[] row in data)
   if (!dict.ContainsKey(row[0]))
      dict.add(row[0], new List<string>() { row };
   else
      dict[row[0]].add(row);

問題は、不変の を使用して f# でこれを行うにはどうすればよいかということMap<string, string list>です。

4

2 に答える 2

10
data
|> Seq.groupBy (fun row -> row.[0])
|> Map.ofSeq
于 2012-11-07T20:40:42.007 に答える
4

これは、C# の例と非常によく似た、より詳細なソリューションです。

data |> Seq.fold (fun map row -> 
                 match Map.tryFind row.[0] map with
                 | Some rows -> Map.add row.[0] (row::rows) map
                 | None -> Map.add row.[0] [row] map) Map.empty
于 2012-11-07T20:57:22.627 に答える