从Tcl返回多个嵌套字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Tcl返回多个嵌套字典相关的知识,希望对你有一定的参考价值。

我有一个Tcl proc,它从一个大文件创建两个字典。它是这样的:

...
...
proc makeCircuitData {spiceNetlist} {
 #read the spiceNetlist file line by line
 # create a dict with multilevel nesting called elementMap that will have the following structure:
 # elementMap key1 key2 value12
 # elementMap keyA keyB valueAB
 # and so on
 # ... some other code here ...
 # create another dict with multilevel nesting called cktElementAttr that will have the following structure:
 # cktElementAttr resistor leftVoltageNode1 rightVoltageNode1 resValue11
 # cktElementAttr resistor leftVoltageNode2 rightVoltageNode2 resValue12
 # cktElementAttr inductor leftVoltageNode2 rightVoltageNode2 indValue11
 # cktElementAttr inductor leftVoltageNode2 rightVoltageNode2 indValue12
 # cktElementAttr capacitor leftVoltageNode2 rightVoltageNode2 capValue11
 # ... so on...   
}

我想从上述类型的过程返回这两个嵌套字典:cktElementAttr和elementMap,因为这两个字典被我的程序的其他部分使用。

从Tcl procs返回两个词典的推荐方法是什么?

谢谢。

答案

这应该工作:

return [list $cktElementAttr $elementMap]

然后,在调用者处,您可以将返回值分配给列表:

set theDictionaries [makeCircuitData ...]

或者将它们分配给不同的变量:

lassign [makeCircuitData ...] cEltAttr elmMap

在Tcl 8.4或更早版本(已过时!),您可以(ab)使用foreach来完成lassign的工作:

foreach {cEltAttr elmMap} [makeCircuitData ...] break

文档:breakforeachlassignlistreturnset

以上是关于从Tcl返回多个嵌套字典的主要内容,如果未能解决你的问题,请参考以下文章

如何在 tcl 中使用 dict 附加嵌套 dict

将一个嵌套字典中的选择项追加到另一个

替换从 VAST 代码返回的多个 HLS VOD 片段

从嵌套字典中返回密钥excel vba

Python:展平多个嵌套的字典并追加

Perl的Hash of Hashes等效实现了Tcl中的dicts字典