代码之家  ›  专栏  ›  技术社区  ›  Raghu

将键附加到嵌套字典Vba

  •  0
  • Raghu  · 技术社区  · 7 年前

    我正在使用嵌套字典来读取文件和存储数据。嵌套字典中有3个级别。每次我读一个文件时,我都想更新第三个子字典。Excel Vba中有选项吗。 Python有一个选项 appending-to-a-nested-dictionary 但我真的需要在excel vba中使用它。如果我得到有用的提示,我将不胜感激。

    我采用了两种方法

    Dict3.Add Key3, item3 
    Dict2.Add Key2, Dict3
    Dict1.add key1, Dict2
    

    这种方法的问题是,我无法向Dict3添加额外的键,例如Key4。下面是另一种方法

    Dict1(Key1).Dict2(Key2).Dict3.Add Key4, item4
    

    导致运行时错误424。请建议我如何改进代码

    1 回复  |  直到 7 年前
        1
  •  0
  •   Kostas K.    7 年前

    这可能会对您有所帮助或使您更加困惑。:)

    你只需要参考字典上的键即可。 Dict1(Key1)(Key2).Add Key4, item4

    这与 Dict1.Item(Key1).Item(Key2).Add Key4, item4 自从 Item 是默认成员。

    Sub T()
    
        Dim m1 As Scripting.Dictionary, m2 As Scripting.Dictionary, m3 As Scripting.Dictionary
        Dim v1 As Variant, v2 As Variant, v3 As Variant
    
        Set m1 = New Scripting.Dictionary
        Set m2 = New Scripting.Dictionary
        Set m3 = New Scripting.Dictionary
    
        m3.Add "Three", "A" 'add A
        m2.Add "Two", m3
        m1.Add "One", m2
    
        m1("One")("Two").Add "Four", "B" 'add B
        m1("One")("Two").Add "Five", "C" 'add C
    
        For Each v1 In m1.Keys
            For Each v2 In m1(v1).Keys
                For Each v3 In m1(v1)(v2).Keys
                    Debug.Print m1(v1)(v2)(v3)
                Next v3
            Next v2
        Next v1
    End Sub
    
    'A
    'B
    'C