如何在 Tcl 中创建嵌套字典

How to create nested dictionary in Tcl

我尝试向已创建的嵌套词典追加或添加值。 这是字典:

set ldifValues {
    00001 {
        first abc
        second 4ee
        third 000
        nested {111-11111 111-11112}
        person 5034
    }

我尝试创建一个新的:

dict with ldifValues 00002 {
    lappend first abc
    lappend second 5ee
    lappend third 0101
    lappend nested 0100-5020 0100-5033 0101-50335
    lappend personnel 5033
}

我想添加一个新键 00002 以及所有其他值。特别是我无法创建新的 00002 密钥。

我将按以下方式创建一个复杂的 dict

set ldifValues [dict create]
dict set ldifValues 00001 {
    first abc
    second 4ee
    third 000
    nested {111-11111 111-11112}
    person 5034
}
dict set ldifValues 00002 {
    first abc
    second 5ee
    third 0101
    nested {0100-5020 0100-5033 0101-50335}
    personnel 5033
}

dict get $ldifValues 00002 personnel
# => 5033

dict set 如果键不存在,基本上会添加一个新的字典条目。如果存在,它将覆盖现有的 key/value 对。所以你可以完美地使用 dict set 添加到现有的 dict.

您可以通过嵌套键设置嵌套键:

dict set ldifValues 00002 first abc
dict set ldifValues 00002 second 5ee
dict set ldifValues 00002 third 0101
dict set ldifValues 00002 nested {0100-5020 0100-5033 0101-50335}
dict set ldifValues 00002 personnel 5033

或者您可以通过使用字典作为要设置的值来进行批量设置:

dict set ldifValues 00002 {
    first abc
    second 5ee
    third 0101
    nested {0100-5020 0100-5033 0101-50335}
    personnel 5033
}

dict with更适合更新现有的嵌套字典结构。