【发布时间】:2012-05-01 08:26:00
【问题描述】:
我有一本字典来存储用于 OCR 目的的图案图像。我从字典中抓取了这些位图,并与我从图像中裁剪的位图进行比较,如果它们匹配 => 抓取了密钥(OCR 部分已完成)。
问题就出现在这里。一个键应该由几个不同的位图(即值)表示。 如何将多个位图添加到字典中,以表示同一个键?
这就是我使用字典的方式:
Dictionary<string, Bitmap> lookup = new Dictionary<string, Bitmap>();
lookup.Add("A", new Bitmap(@"C:\08\letters\1\a1.bmp", true));
lookup.Add("A", new Bitmap(@"C:\08\letters\1\a2.bmp", true)); // Error will be here, because key A already exists for one Bitmap value.
lookup.Add("a", new Bitmap(@"C:\08\letters\1\aa1.bmp", true));
lookup.Add("B", new Bitmap(@"C:\08\letters\1\b1.bmp", true));
现在,为了获取图像和价值,我做了以下操作:
var target = lookup.ToList();
bitmap b1 = target[j].Value; //grab value
//if value = cropped bitmap => proceed
string key = target[j].Key; //grab key
根据您的解决方案,此过程将如何变化?
附:我听说过“System.Linq.Lookup(Of TKey, TElement)”,但以前从未使用过。这个“查找”会帮助我解决我的问题还是完全不同的工具? google 也不太了解,欢迎举个例子
请注意,我只在程序启动时加载字典一次,所以添加速度有多快并不重要。 查找,另一方面是最困扰我的。 我的两个字典中有 120 个元素,根据这篇文章http://www.dotnetperls.com/dictionary-time - 在列表中查找比在字典中慢得多。
无论如何,我将采取一些措施来测试下面建议的 List 解决方案 - 与我现在拥有的 Dictionary 解决方案相比,并在稍后(可能是今晚)告诉结果。
【问题讨论】:
标签: c# dictionary lookup