Tcl 如何处理嵌套的dict?

Tcl 如何处理嵌套的dict?,tcl,Tcl,我有点困惑。我已经建立了一个字典和一个嵌套字典 这是它的“布局” 。 . 在一个“dict for”命令中,我想提取等级值——我无法让它工作。 如果我不在指令范围内,我可以使用 set tmp [dict get $Courses 044262 grade] 但是在dict中,因为我无法让它工作…尝试了许多$key或$val的组合,有或没有$符号 我做错了什么(如果有人能推荐一本有问题的好书/在线教程进行培训,那就太好了!)对于您的特定词典,每个循环都有一本属于自己的词典。然后,您就可以使

我有点困惑。我已经建立了一个字典和一个嵌套字典 这是它的“布局”

。 .

在一个“dict for”命令中,我想提取等级值——我无法让它工作。 如果我不在指令范围内,我可以使用

set tmp [dict get $Courses 044262 grade] 
但是在dict中,因为我无法让它工作…尝试了许多$key或$val的组合,有或没有$符号


我做错了什么(如果有人能推荐一本有问题的好书/在线教程进行培训,那就太好了!)

对于您的特定词典,每个循环都有一本属于自己的词典。然后,您就可以使用普通的字典操作进行访问;例如:

dict for {key val} $Courses {
    puts " the key = $key "
    puts " the val = $val "
    # Iterate over contents
    dict for {k v} $val {
        puts "$k => $v"
    }
    # Picking out a particular key
    puts "The grade was [dict get $val grade]" 
}
请注意,如果您正在更新,更新不会写回
课程
;字典是写时复制的值,这对于Tcl来说很正常。您必须执行如下更新:

dict set Courses $key grade "Excellent, dudes!"
还要注意的是,迭代不会看到更改(您在为启动
dict时获取了一个逻辑副本)。如果您真的想看到更改,则需要以完全不同的方式编写循环:

foreach key [dict keys $Courses] {
    puts " the key = $key "
    puts " the val = [dict get $Courses $key] "
    dict for {k v} [dict get $Courses $key] {
        puts "$k => $v"
    }
    puts "The grade was [dict get $Courses $key grade]"
    dict set Courses $key grade 1234567890
    puts "The grade is changed to [dict get $Courses $key grade]"
}

<>如果事情变得更加复杂,我会认真考虑使用像SQLite这样的嵌入式数据库来管理数据…

TNX兄弟。大忙
dict set Courses $key grade "Excellent, dudes!"
foreach key [dict keys $Courses] {
    puts " the key = $key "
    puts " the val = [dict get $Courses $key] "
    dict for {k v} [dict get $Courses $key] {
        puts "$k => $v"
    }
    puts "The grade was [dict get $Courses $key grade]"
    dict set Courses $key grade 1234567890
    puts "The grade is changed to [dict get $Courses $key grade]"
}