Arrays 如何在TCL中查找数组行中的列数

Arrays 如何在TCL中查找数组行中的列数,arrays,tcl,Arrays,Tcl,对于名为cb\u节点的数组,我有不同数量的列。要对这些数据进行后处理,需要准确知道每行中的列数 数组如下所示 cb_节点(1,1)值 cb_节点(1,2)值 ... cb_节点(1256)值 cb_节点(2,1)值 .... cb_节点(2,56)值 等等。。 数组中的每一行具有不同的列数值只是一个例子,数组中的键是不同的 TCL中的命令集只有array get cb_node和array size cb_node,它们没有给出每行的行和列编号 我们如何在TCL中做到这一点 如果不知道有多少行

对于名为
cb\u节点的数组,我有不同数量的列。要对这些数据进行后处理,需要准确知道每行中的列数

数组如下所示

cb_节点(1,1)值
cb_节点(1,2)值
...
cb_节点(1256)值
cb_节点(2,1)值
....
cb_节点(2,56)值
等等。。 数组中的每一行具有不同的列数<代码>值
只是一个例子,数组中的键是不同的

TCL中的命令集只有
array get cb_node
array size cb_node
,它们没有给出每行的行和列编号


我们如何在TCL中做到这一点

如果不知道有多少行或列,但知道没有跳过的行,则可以循环,只要为true:

这将打印出来

cb_node(1,1) = a
cb_node(1,2) = b
cb_node(1,3) = c
cb_node(2,1) = d
cb_node(3,1) = e
cb_node(3,2) = f

如果不知道有多少行或列,但知道没有跳过的行,则可以循环,只要为true:

这将打印出来

cb_node(1,1) = a
cb_node(1,2) = b
cb_node(1,3) = c
cb_node(2,1) = d
cb_node(3,1) = e
cb_node(3,2) = f

如果键中的
1
表示行号,那么您可能可以使用如下内容:

set rowNum 1
set noOfColumns [llength [array names cb_node $rowNum,*]]

如果键中的
1
表示行号,那么您可能可以使用如下内容:

set rowNum 1
set noOfColumns [llength [array names cb_node $rowNum,*]]

您最好使用二维dict。您最好使用二维dict。当然,您可以使用循环并对行号进行迭代,同时使用上述方法获得每行中的列数(当列数达到0时,您必须停止/中断)。嗨,Jerry,数组名具有此特殊功能。太棒了@SemiCode
array names
只获取一个数组中的所有键,您可以提供一个glob模式来缩小要获取的键的范围。当然,您可以使用循环并对行号进行迭代,同时使用上述方法获取每行中的列数(当列数达到0时,您必须停止/中断)Hi Jerry,数组名称具有此特殊功能..太棒了@半代码
数组名称
只获取数组中的所有键,您可以提供一个全局模式来缩小要获取的键的范围。嗨,Glenn,“dict incr count$row”中实际发生了什么?无法使用示例上网:(嗯,我没有初始化变量:我更新了答案。
无法读取“count”:没有这样的变量
会表明您的
cbu节点
数组为空。嗨,格伦,“dict incr count$row”中实际发生了什么?无法使用示例上网:(嗯,我没有初始化变量:我更新了答案。
无法读取“count”:没有这样的变量
会表明您的
cbu节点
数组为空。
row 2 has 56 cols
row 1 has 256 cols