如何在 TCL 中创建并迭代哈希值的哈希值?

2023-12-29

如何在 TCL 中创建并迭代哈希值的哈希值?

如果我有这样的数据:

foo = {
    a => {
        aa => { aa1 aa2 aa3 }
        ab => { ab1 ab2 ab3 }
        ac => { ac1 ac2 ac3 }
    }
    b => {
        ba => { ba1 ba2 ba3 }
        bb => { bb1 bb2 bb3 }
        bc => { bc1 bc2 bc3 }
    }
    c => {
        ca => { ca1 ca2 ca3 }
        cb => { cb1 cb2 cb3 }
        cc => { cc1 cc2 cc3 }
    }
}

如何通过一次插入一个叶节点数据项来创建这样的散列。就像是:

lappend foo(a)(ab) "ab1"

那么如何迭代所有数据元素呢?喜欢:

foreach key in foo {
    foreach sub_key in foo($key) {
        foreach elem in foo($key)($sub_key) {
            puts "foo\($key\)\($sub_key\) is $elem"
        }
    }
}

编辑 : 不幸的是,我无法访问较新的“dict”结构。


假设您使用的是 Tcl 8.5+,则可以使用字典:

定义字典很简单:

set foo {
    a {
        aa { aa1 aa2 aa3 }
        ab { ab1 ab2 ab3 }
        ac { ac1 ac2 ac3 }
    }
    b {
        ba { ba1 ba2 ba3 }
        bb { bb1 bb2 bb3 }
        bc { bc1 bc2 bc3 }
    }
    c {
        ca { ca1 ca2 ca3 }
        cb { cb1 cb2 cb3 }
        cc { cc1 cc2 cc3 }
    }
}

或者以编程方式定义它:

set foo [dict create]
foreach first {a b c} {
    dict update foo $first subdict {
        foreach second {a b c} {
            foreach third {1 2 3} {
                dict lappend subdict "$first$second" "$first$second$third"
            }
        }
    }
}

并输出它:

dict for {key1 subdict} $foo {
    dict for {key2 list} $subdict {
        foreach elem $list {
            puts "$key1\t$key2\t$elem"
        }
    }
}

edit:将数组解决方案(非字典)移至单独的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 TCL 中创建并迭代哈希值的哈希值? 的相关文章

  • 了解分发冻结的 Python Tkinter 应用程序需要 TCL 中的哪些文件

    我试图找出 Python Python 2 6 Python 2 7 tcl 文件夹中的哪些文件是必需的 以便使用 Py2exe 或类似工具分发冻结的 Python Tkinter 应用程序 快速而肮脏的方法 使用 pyexe 作为示例 是
  • TCL 电子邮件脚本无法在 Activestate TCL 中发送

    我在 MAC OSX 版本的 TCL 上运行了以下脚本 它工作正常 但它挂在 Windows 7 计算机上的 ActiveState TCL 上 proc send simple message recipient email server
  • 如何在 tcl 中使用 split 删除不需要的字符

    这是一个例子 Interface IP Address OK Method Status Protocol FastEthernet0 0 unassigned YES unset administratively down down Fa
  • 如何列出 TCL 实例中的所有命名空间?

    如何列出 tclsh 实例中加载的所有名称空间 Chenz 尝试从 TCLer 运行这个过程Wiki http wiki tcl tk 1489 proc listns parentns set result list foreach ns
  • TCL - 按任意数量的空格将字符串拆分为列表

    假设我有一个像这样的字符串 set str AAA B C DFG 142 56 现在我想得到一个列表 如下所示 AAA B C DFG 142 56 为此 我想使用 split 函数 但在这种情况下我会得到一些额外的空列表 我怎样才能得到
  • TCL/Expect - exec - 如何使用参数执行程序

    我正在尝试使用 TCL 命令exec in tclsh这是我的结果 set show me dir ls ls exec show me dir VboxSharedFolder set show me dir ls la ls la ex
  • 生成和执行之间有什么区别?

    我正在学习编写 TCL 期望 脚本 我注意到一些示例显示了如何使用 spawn 而其他示例则显示了命令 exec 我尝试谷歌搜索 但找不到有什么区别 假设我在一个很长的期望脚本中间调用 exec 我会期望发生什么 spawn is an e
  • 循环提示输入另一个密码时出现问题

    我需要一些关于 EXPECT 脚本的帮助 我正在尝试在访问大量主机之前自动登录 并在用户错误输入密码时进行处理 我首先获取用户名和密码 然后针对特定主机对其进行验证 如果密码无效 我想循环并再次询问用户名和密码 我正在尝试这个 省略前面几行
  • 从 PDF 中搜索文本的脚本

    Problem 在 Mac OS X 平台上 我想用 Python 或 Tcl 编写一个脚本来搜索 PDF 文件中的文本并提取相关部分 我很感激任何帮助 背景 我正在编写脚本来查看 PDF 中的内容 以确定它是否是账单 来自哪家公司以及持续
  • 将列表传递给 Tcl 过程

    将列表传递给 Tcl 过程的规范方法是什么 如果我能得到它 以便列表自动扩展为可变数量的参数 我真的很喜欢它 所以像这样 set a b c myprocedure option1 option2 a and myprocedure opt
  • 如何使用tcl中的puts更改文本颜色

    我想通过使用 tcl 中的 put 命令来更改控制台中显示的文本颜色以简化调试 我看到很多文章是 abt tk 而不是 tcl 仅供参考 我在 Windows 7 上使用 Active tcl 我尝试过其他人提供的以下代码 http www
  • Tcl.h:没有这样的文件或目录

    我正在尝试将一些代码从 Solaris 机器移植到 Linux 特别是 Redhat 机器上 代码编译没有问题 并且在 Solaris 机器上运行也没有问题 然而 在 Linux 上重新编译时 我遇到了 tcl h 的问题 编译器告诉我 e
  • 无法读取:变量不是数组

    我有以下代码 set arr1 a1 t1 set arr2 a2 t2 set l1 lappend l1 arr1 lappend l1 arr2 set arr3 a3 l1 foreach names array names arr
  • 调试 tcl 流程 - 就像 bash -

    我只是想知道是否有类似的东西set x因为它存在于 Bash forTCL 中 它允许我跟踪脚本流程 然后帮助我调试它 Simple trace add execution source enterstep apply cmd op put
  • 从另一个应用程序通过 Rscript 启动后,如何将 R Tk 窗口置于前面?

    我有一个脚本 大致如下 if require tcltk2 install packages tcltk2 repos http cran us r project org require tcltk2 base lt NULL done
  • 执行 tail -F 直到匹配模式

    我想做一个tail F在文件上直到匹配模式 我找到了一种使用方法awk 但恕我直言 我的命令并不是很干净 问题是我need由于某些限制 只能用一行来完成 tail n 0 F tmp foo awk W interactive if 1 E
  • 如何让proc更有效?

    有一个顶点集合 x1 y1 x2 y2 xn yn 我想改变这些坐标的中心 所以我尝试 proc changeCenter vertices X Y set myList list foreach element vertices lapp
  • Tcl正则表达式

    set d aa1 1 set d aa2 1 set d aa3 1 set d aa4 1 set d aa5 1 set d aa6 1 set d aa7 1 set d aa8 1 set d aa9 1 set d aa10 1
  • 如何检查 TCL 的标准输入缓冲区是否为空?

    With fconfigure http www tcl tk man tcl8 6 TclCmd fconfigure htm您可以获取和设置频道选项 buffering指定缓冲类型 默认为line for stdin 有没有办法检查缓冲
  • (Tcl/Expect) 退出后清屏

    我想在退出我的 半 交互式期望脚本后清除屏幕 在本地计算机上 我可以在脚本中做到这一点吗 这是我尝试过的 但失败了 usr bin expect f set env TERM vt100 spawn ssh Y username domai

随机推荐

  • Linq 确实比 Foreach 更快吗?

    如果您搜索 Linq 比 Foreach 更快 那么答案始终是 no foreach is 我还发现了另一个 stackoverflow 问题提问者没有做 热身 https stackoverflow com questions 17147
  • 检测因用户操作而中断的 Ajax 请求

    我想检测 Ajax 调用正在进行中然后由于某些用户操作 例如用户导航到另一个页面 而中断的情况 我可以看到 当发生这种情况时 我的 onreadystatechange 处理程序会被调用 并显示 readyState 4 DONE 和 st
  • CanBeNull 和 ReSharper - 将其与异步任务一起使用?

    我最近发现你可以使用 CanBeNull C 中的注释告诉 ReSharper 和其他插件 某个方法可以返回 null 这很棒 因为当我没有处理这些情况时 它会让 ReSharper 提醒我 然而 对于async返回 a 的方法Task o
  • MongoDB 按字段 A 排序,如果字段 B != null,否则按字段 C 排序

    我面临这个挑战 检索按字段 A 排序的文档如果字段 B 存在 不为空 否则按字段排序 C 在 SQL 世界中 我会执行两个查询并创建一个 UNION SELECT 但我不知道如何从 Mongo 开始 map reduce 是正确的方法吗 或
  • writeTo PipedOutputStream 只是挂起

    我的目标是 从 S3 读取文件 更改其元数据 再次推送到S3 AWS java SDK 不允许推送输出流 因此 我必须将outputstream从步骤2到inputstream 为此我决定使用PipedInputStream 但是 我的代码
  • 在 angular2 中的 ngFor 中显示更多按钮

    我有超过 50 项的清单 我只想显示前 10 个项目 并且我将有一个按钮 单击该按钮会显示接下来的 10 个项目 再次单击该按钮会显示接下来的 10 个项目 直到显示所有项目 ul class results main content li
  • 获取插入行的ID cassandra .Net

    我正在使用 datastax C 驱动程序将一行插入 cassandra 数据库 我的示例代码如下所示 var cluster Cluster Builder AddContactPoints localhost Build using c
  • 仅将 css 样式设置为表格的第一行

    如何用CSS访问不同表的第一行tr班级名称 div table tbody tr class head td Date td td Info td td More td tr tr td td tr tbody table div 如何制作
  • 使用 animate 中的 Step 函数来变换旋转元素

    All 我正在尝试使用 jquery animate 和 css 转换属性创建 往返 动画 我提到this https stackoverflow com questions 5462275 animate element transfor
  • 过滤掉 Log4j2 文件中的 Hibernate 日志

    我有一个log4j2 xml文件如下 它正在工作 但它获取了大量 Hibernate 和 GWT 日志文件 如何排除这些包 或者如何让我的日志文件仅包含包层次结构中的日志记录
  • 尝试使用 ssh2_auth_pubkey_file() 连接

    我正在尝试制作一个在终端上运行的 php 脚本 该脚本将通过 ssh 连接到远程服务器并检索文件 这是我到目前为止的代码 usr bin php q
  • 多视图控件如何处理其视图状态?

    多视图控件是否包含其每个视图的视图状态信息 无论视图当前是否可见 是的 所有视图仍然存在 只是不活动的视图被隐藏 禁用 http msdn microsoft com en us library system web ui webcontr
  • 使用 PayPal API 通过交易 ID 获取付款

    我有 PayPal 交易 ID 但不知道与其关联的付款 ID 付款不一定是由 REST API 创建的 我想使用交易ID查询付款 REST API 文档建议通过交易 ID 查找销售额仅当使用 REST API 创建时才可能 https de
  • 一次处理 N 个作业的 Asyncio Worker?

    我正在尝试做一个asyncio工人类将消耗作业队列中的作业并处理最多N并行工作 某些作业可能会排队其他作业 当作业队列为空并且工作线程完成所有当前作业时 它应该结束 我还在挣扎asyncio从概念上讲 这是我的尝试之一 其中N 3 impo
  • Jquery .remove() 撤消?

    有什么办法可以实现这一点吗 我正在使用一个分页插件 它读取 ul 中的 li 数量 并确定要吐出的编号链接的数量 您可能想使用 hide 并检查 li 是否可见 这可以通过以下方式完成 li visible
  • PySpark - 获取组中每行的行号

    使用 pyspark 我希望能够对 Spark 数据帧进行分组 对组进行排序 然后提供行号 所以 Group Date A 2000 A 2002 A 2007 B 1999 B 2015 会成为 Group Date row num A
  • JaCoCo 和 Gradle - 过滤选项

    我目前正在使用 Gradle 插件来运行 JaCoCo 来进行代码覆盖率报告 我想在我的 build gradle 中指定一些过滤选项 https github com jacoco jacoco wiki FilteringOptions
  • 如何使用 openpyxl“格式化单元格”?

    我想使用 openpyxl 格式化 Excel 工作表中的列单元格 使其数字小数位为 0 示例表 B C 63245634566 NAME 63562341234 NAME 23452345345 NAME 21345234554 NAME
  • Jetpack Compose 矢量解析问题

    我正在尝试加载向量 但不断收到此错误堆栈跟踪 java lang IllegalArgumentException Unknown command for R at androidx compose ui graphics vector P
  • 如何在 TCL 中创建并迭代哈希值的哈希值?

    如何在 TCL 中创建并迭代哈希值的哈希值 如果我有这样的数据 foo a gt aa gt aa1 aa2 aa3 ab gt ab1 ab2 ab3 ac gt ac1 ac2 ac3 b gt ba gt ba1 ba2 ba3 bb