0

我正在尝试创建一个如下所示的数据结构:

             xls | doc | ppt | pdf
           |---------------------
app/xls    |  1  |  0  |  0  |  0  
app/msword |  1  |  1  |  0  |  0
app/ppt    |  0  |  0  |  1  |  0
app/pdf    |  0  |  0  |  0  |  1

基本上我有一个列表列表,其中包含以下信息:

[ext, xls], [mime, app/xls]
[ext, ppt], [mime, app/ppt]
[ext, doc], [mime, app/msword]
[ext, xls], [mime, app/msword]

请注意,有时扩展名与适当的 MIME 值不匹配。所以想要像表格这样的输出的原因是能够以图形方式查看未映射到正确 MIME 的扩展的分布情况。

因此,我可以遍历列表列表并访问 ext 和 mime 的每个文档,但我无法理解的是如何提取/存储因此以表格形式输出此信息。我还有一个正确的 ext-mime 字典,这对于确保从表的左上角到右下角的对角线是唯一应该具有非零值的地方,如果数据都是正确的(因为在这种情况下,列行的顺序很重要)。

那么从这里去哪里呢?!

4

1 回答 1

2

如果我理解您的问题,那么您将遍历一堆数据并填充上述结构中的数字(0 和 1,但可能是 2.. N++)。

不用花哨,我会使用

d = new Dictionary<string, Dictionary<string, int>>();   

如果我想变得花哨,我会创建一个具有以下内容的类:

  • 到目前为止看到的水平键列表
  • 到目前为止看到的垂直键列表
  • 值为 0|1|2 的“key1#key2”字典...
  • (key1,key2) => 添加到水平键和/或垂直键(如果不存在)
  • (key1,key2) => 的“getter”从字典中检索值

这将允许您以最小的努力将其拉出一个漂亮的网格,同时保持良好的写入速度。它还可以让您以任何您想要的方式对行/列进行排序。如果你添加了一个“OptimalMapping”来让它知道什么 mimetype 映射到什么扩展,你可以很容易地添加一个检查来查看某些东西是否是最优的。

于 2013-05-09T16:18:17.913 回答