3

多键数据有常用的数据结构吗?例如 (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]
4

1 回答 1

2

不,不是。

在不破坏类型安全的情况下,我认为有两种解决方案。

  • 字典词典 -Dictionary<T1, Dictionary<T2, TRes>>
  • 元组字典 - Dictionary<Tuple3<T1, T2, T3>, Res>. 请注意 - 与您可以编写的 F# 不同Map<T1 * T2 * T3, Res>- C# 没有内置的元组类型 - 您必须将其单独实现为泛型类或结构。

但是关于您的示例代码,锯齿状词典(Dictionaries of Dictionaries)是唯一的选择。

于 2009-06-26T14:48:52.023 回答