拆分字符串列表

时间:2012-07-04 09:05:21

标签: f#

我对F#非常(非常)陌生,而且我对一个小问题感到头疼。我有string list list我试图操纵和转换。这可能是微不足道的。

正在从CSV文件中读取以下数据:

1,ABC,3
1,DEF,3
1,XYZ,1
2,ABC,2
2,XYZ,1
3,DEF,2
3,XYZ,2

哪个对或错,我正在读string list list。此数据表示非标准化数据集,其中每条记录上索引0处的字段是标识符字段。目前我只是试图拆分外部列表,以便最终得到一个代表以下内容的string list list list

1,ABC,3        2,ABC,2        3,DEF,2
1,DEF,3        2,XYZ,1        3,XYZ,2
1,XYZ,1

然后,上面的结果将被推送到我的Typed模型中并送入应用程序的其余部分。

2 个答案:

答案 0 :(得分:1)

使用Seq.groupby -

input
|> Seq.groupBy (fun (a,b,c) -> a)
|> Seq.toList

答案 1 :(得分:1)

在您的代码中:

csvRecords
|> Seq.groupBy (fun record -> (record.Item 0))
|> List.ofSeq
|> List.map(toTypedModel)

record.Item 0不是获取列表第一个元素的好方法。您应该使用List.head或模式匹配来实现此目的。

您的示例如下:

csvRecords
|> Seq.groupBy List.head
|> Seq.map toTypedModel
|> List.ofSeq

我还改变了顺序使用toTypedModel的顺序,这有助于避免分配不必要的列表。