【发布时间】:2025-12-14 00:00:01
【问题描述】:
我正在创建一个使用嵌套字典和最低级别列表的数据结构。这是我的数据示例:
Country, Customer, Purchased
US, Alan, Lawnmower
US, Alan, Hammer
US, Karen, Donkey
US, Simon, Mustang
MX, Carl, Lawnmower
MX, Alan, Donkey
...
我想到的数据结构看起来像dictionary --> dictionary --> array——也就是country --> customer --> purchased。计划是每个dictionary --> dictionary 组合都有一个新数组。
但是,当我尝试更新数组时,它似乎链接到 dictionary --> dictionary 结构的所有较低级别。即第三行处理完后,出现如下情况:
US --> Alan --> [Lawnmower, Hammer, Donkey]
US --> Karen --> [Lawnmower, Hammer, Donkey]
...而我期望看到的是:
US --> Alan --> [Lawnmower, Hammer]
US --> Karen --> [Donkey]
这是我尝试使用的代码:
i_p = UBound(purchased_array)
Redim Preserve purchased_array(i_p + 1)
purchased_array(i+p + 1) = item ' new item to add to the array
dataset(country)(customer) = purchased_array
但是,这导致dictionary --> dictionary 结构的每个最低级别都引用了基本相同的数组。
对我做错了什么有什么想法吗?
【问题讨论】:
-
为什么是
dictionary --> dictionary --> array,为什么不是dictionary --> dictionary --> collection? -
我相信
collection是一个键控数据结构?我可以用它代替数组吗? -
当然,集合对象支持
.Add(Item, [Key])方法,但是key是可选的。所以,你可以省略它。在您的情况下,使用集合代替数组会更简单 -
如果您在字典中有一个数组,您必须先将其从字典中拉出,然后才能对其进行修改。然后放回去。
-
@TimWilliams 当你说“拉出来”时回复:一个数组,你在说什么方法?我尝试将数组复制到临时文件。数组,然后插入临时。数组,但具有相同的最终结果。有没有办法将数组设置为 NULL 或类似的?
标签: arrays excel vba data-structures dictionary