: '''[dict] map {'''''keyVar valueVar'''''}''' ''dictionaryValue body'' This command is used to apply a transformation (described by ''body'') to the ''dictionaryValue'' to produce a new dictionary. It is analogous to [dict for] as [foreach] is to [lmap]. The new value created in the result dictionary will be the result of evaluating ''body'' that time round the loop, and the key used will be the current value of the variable ''keyVar'' (i.e., change the variable to change the key). It's an error to have the variable unset at that point; skip a round by using [continue] (or stop early with [break]). **[[dict map]] in Tcl 8.5** [AMG]: The following implements [[dict map]] in Tcl 8.5 in terms of the other [[dict]] commands: ====== proc ::tcl::dict::map {keyVarValueVar dictionary script} { # Confirm argument syntax. if {[llength $keyVarValueVar] != 2} { return -code error "must have exactly two variable names" } # Link to local variables which will be used as iterators. upvar 1 [lindex $keyVarValueVar 0] key [lindex $keyVarValueVar 1] val # Accumulate and return the result. ::set result {} for {key val} $dictionary { switch [catch { ::set val [uplevel 1 $script] set result $key $val } msg options] { 0 - 4 {} 3 {return} default {incr options -level; return -options $options $msg} } } return $result } namespace ensemble configure ::dict -map [dict replace\ [namespace ensemble configure ::dict -map] map ::tcl::dict::map] ====== For [[dict map]] in Tcl 8.4, see [forward-compatible dict]. <>Command