I seem to have problem with getting Jim and Bob in the list named chicken. I know this is possible, to have a dictionary inside another dictionary which has a list of values. What am I doing wrong?
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]"
Output
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
As you can see the tools list worked. but chicken list didn't work. Is there a problem in the way I structure my code? Im using dict lappend or dict get wrong? Anything would help to shed some light on this, Thank you.
So I went to tcl chat room and they told me:
As described in the man page, dict lappends both chicken and Bob to the list in dict element animal.
You can't directly append to a list deeper in the dict.
One way would be:
dict with farm {
dict lappend animal chicken Jim Bob
}
so ya, my bad. :P all credit goes to "schelte" in the tcl chat room.
Extra: the reason for why dict lappend works the way it does comes form Donal Fellows himself in the comments above, thank you Donal
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With