tcl 关联数组中的重复键

Duplicate keys in tcl associative array

我正在使用关联 array/hash 映射来存储一些数据。我想保留具有相同键但不同值的重复条目。当前,上一个密钥正在被最后一个实例覆盖。

key: LVL values: vdd,vddr

key: LVL values: vddi,vdd

Multimaps 通常作为项目列表的普通映射来实现。 (从算法上讲,还有其他几种方法,但除了少数退化的情况外,它们在实践中很少见。)在 Tcl 中,您可以通过在创建时附加到元素中的列表并在读出时使用嵌套循环来做到这一点:

# With arrays
foreach {key item} $thingsToPutIn {
    lappend map($key) $item
}

foreach {key items} [array get map] {
    foreach item $items {
        puts "$key => $item"
    }
}
# With dictionaries
foreach {key item} $thingsToPutIn {
    dict lappend map $key $item
}

dict for {key items} $map {
    foreach item $items {
        puts "$key => $item"
    }
}