是否存在多键数据的常用数据结构?例如(key1,key2,...,keyN) - >值。我以前使用字典词典(在c#中),然后在此基础上编写我自己的包装器,使语法看起来更好一点。但似乎我仍然需要为每个N字典编写一个包装器,其中N是键的数量,因为我必须在代码中定义嵌套的字典结构。
假设我正在使用c#,是否有一种数据结构可以更好地封装这种用法,并且可以包含任意数量的具有类哈希表的查找性能的键?我不能简单地将所有键组合成一个唯一键,因为我需要能够执行类似
的操作foreach key2 in data[key1]
foreach key3 in data[key1][key2]
foreach key4 in data[key1][key2][key3]
答案 0 :(得分:2)
不,不是。
在不打破类型安全的情况下,我认为有两种解决方案。
Dictionary<T1, Dictionary<T2, TRes>>
Dictionary<Tuple3<T1, T2, T3>, Res>
。请注意 - 与F#不同,您可以编写Map<T1 * T2 * T3, Res>
- C#没有内置元组类型 - 您必须将它作为泛型类或结构单独实现。但是关于你的示例代码,参差不齐的字典(Dictionaries of Dictionaries)是唯一的选择。