【Tcl学习笔记】第7章 字典

字典:

  • 给像列表这样的集合每个元素指定一个独有的名字,通过名字访问元素。
  • 一个有序的集合,字典会维护关键字的顺序,可按顺序遍历它们。
  • 像有偶数个元素的列表,奇数位存储名字(关键字)。
  • 与数组的区别:数组是变量的无序集合,而不是值的集合,而且不能嵌套。

7.2 字典的基本结构(dict get)

  • 命令:dict get dictionary key ?key ...?
    作用:返回字典中给定key对应的值,多个key取嵌套字典的值。
    % set lum {name w0shishabi action eat}
    name w0shishabi action eat
    % dict get $lum action
    eat
    
    • 在字典中查找一个值是很快速的,字典还可用作有序哈希表。

7.3 创建和更新字典

  • 命令:dict create key value ?key value ...?
    作用:用给定的key和value创建字典。如果有相同的key,存储最后一次对应value。

    % dict create name w0shishabi action read
    name w0shishabi action read
    
  • 命令:dict replace dictionary ?key value ...?
    作用:在dictionary中加入命令中给出的key关键字关联对(如果已存在则覆盖)。

    % set lum {name w0shishabi action read}
    name w0shishabi action read
    % dict replace $lum gender male
    name w0shishabi action read gender male
    
  • 命令:dict remove dictionary ?key ...?
    作用:在dictionary中删除key项。

    % set lum {name w0shishabi action read}
    name w0shishabi action read
    % dict remove $lum action
    name w0shishabi
    
  • 命令:dict merge ?dictionary ...?
    作用:联合所有字典组成新的字典。

    % set lum_name {name w0shishabi}
    name w0shishabi
    % set lum_action {action read}
    action read
    % dict merge $lum_name $lum_action
    name w0shishabi action read
    
  • 命令:dict set varName key ?key...? value
    作用:更新varName中的key关联的value。

    % set lum {name w0shishabi action read}
    name w0shishabi action read
    % dict set lum action work
    name w0shishabi action work
    
  • 命令:dict unset varName key ?key...?
    作用:移除varName中的key关联的value。

    % set lum {name w0shishabi action read}
    name w0shishabi action read
    % dict unset lum action
    name w0shishabi
    

7.4 检测字典(size、exists、keys、for)

  • 命令:dict size dictionary
    作用:返回dictionary的关键字的数量。

  • 命令:dict exists dictionary key ?key ...?
    作用:检测dictionary中是否存在key。多个key用于嵌套字典。

  • 命令:dict keys dictionary ?pattern?
    作用:返回dictionary中的全部关键字的列表。如果设置了pattern,则返回与之匹配的关键字。

  • 命令:dict values dictionary ?pattern?
    作用:返回dictionary中的全部值的列表。如果设置了pattern,则返回与之匹配的值。

  • 命令:dict for {keyVar valueVar} dictionary body
    作用:遍历dictionary中的关键字和值,将给定变量依次设为相应的关键字和关联值,然后分别运行body参数。

    % set example {title Miss firstname Ann surname Huan}
    title Miss firstname Ann surname Huan
    % dict for {key value} $example {puts [format "%s: %s" $key $value]}
    title: Miss
    firstname: Ann
    surname: Huan
    

7.5 更新字典中的值

  • 命令:dict append varName key value ?value ...?
    作用:把给定的字符串value添加到字典varName的key对应的值中。

  • 命令:dict incr varName key ?increment?
    作用:对varName字典中与给定key对应的值进行增加操作。如果增量没有给定,默认1。如果没有key,创建该项,关联值设为0,再进行增加操作。

  • 命令:dict unpdate varName key localVar ?key localVar ...? body
    作用:对varName字典里所有再命令中列出的key,将其值绑定到localVar,然后运行body。运行完后,将变量写回字典。

  • 命令:dict with varName key ?key ...? body
    作用:对varName字典里所有再命令中列出的key,将其值绑定到varName,然后运行body。运行完后,将变量写回字典。

7.6 使用嵌套字典

  • 很多dict命令支持嵌套字典,即允许命令中指定多个key。
  • 支持嵌套字典的子命令:dict get、dict exists、dict set、dict unset、dict with
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lu-ming.xyz

觉得有用的话点个赞吧 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值