将IEnumerable
转换为查看字典式结构但每个值具有多个键的最佳方式是什么?
我正在寻找的东西,大致做同样的事情,因为这,并且在一般的方式:将IEnumerable转换为每个值具有多个键的查找
var wordsByLetter = new Dictionary<char, HashSet<string>>();
foreach (string word in words)
{
foreach (char letter in word.Distinct())
{
if (!wordsByLetter.ContainsKey(letter))
{
wordsByLetter.Add(letter, new HashSet<string>());
}
wordsByLetter[letter].Add(word);
}
}
所以结果是一个字典映射使用含有该组词中的每个字母信。
例如,如果words
包含{"foo", "faz", "zoo"}
然后将得到的字典将包含:
'a' -> {"faz"}
'f' -> {"foo", "faz"}
'o' -> {"foo", "zoo"}
'z' -> {"faz", "zoo"}
我可以把我的代码示例为一个扩展方法,但有一个内置的功能或更好的算法使用?
你怎么打算用这个数据结构?在这种情况下,每个值的多个键是什么意思? – 2010-01-12 23:46:55
@lpthnc:我编辑了这个问题,试图澄清。 – Whatsit 2010-01-12 23:55:45
我接受后编辑我的答案,您可能会对新版本感兴趣... – 2010-01-13 00:11:19