Tcl:字典中的字典

Dar*_*nja 5 dictionary tcl

我似乎在让Jim和Bob进入名为chicken的列表中时遇到问题。我知道在另一个包含值列表的字典中包含一个字典是可能的。我究竟做错了什么?

puts [dict set farm tools hoe]
puts [dict lappend farm tools pitchfork]
puts [dict set farm animal cow Marry]
puts [dict set farm animal chicken Jim]
puts [dict lappend farm animal chicken Bob]
puts "chicken list: [dict get $farm animal chicken]"
puts "tool list: [dict get $farm tools]"
Run Code Online (Sandbox Code Playgroud)

输出量

tools hoe
tools {hoe pitchfork}
tools {hoe pitchfork} animal {cow Marry}
tools {hoe pitchfork} animal {cow Marry chicken Jim}
tools {hoe pitchfork} animal {cow Marry chicken Jim chicken Bob}
chicken list: Bob
tool list: hoe pitchfork
Run Code Online (Sandbox Code Playgroud)

如您所见,工具列表起作用了。但是鸡肉清单没有用。我构建代码的方式是否存在问题?我正在使用dict lappend或dict出错?一切都会帮助您对此有所了解,谢谢。

Dar*_*nja 2

于是我去了tcl聊天室,他们告诉我:

如手册页中所述,dict 将 Chicken 和 Bob 都添加到 dict element Animal 中的列表中。

您不能直接附加到字典更深的列表中。

一种方法是:

dict with farm {
    dict lappend animal chicken Jim Bob
}
Run Code Online (Sandbox Code Playgroud)

所以是的,我的错。:P 所有功劳都归功于 tcl 聊天室中的“schelte”。

额外: dict lappend 如此工作的原因来自 Donal Fellows 本人在上面的评论中,谢谢 Donal