您当前的位置: 首页 > 

lu-ming.xyz

暂无认证

  • 0浏览

    0关注

    115博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

lu-ming.xyz 发布时间:2021-08-01 17:14:52 ,浏览量:0

目录
  • 7.2 字典的基本结构(dict get)
  • 7.3 创建和更新字典
  • 7.4 检测字典(size、exists、keys、for)
  • 7.5 更新字典中的值
  • 7.6 使用嵌套字典

字典:

  • 给像列表这样的集合每个元素指定一个独有的名字,通过名字访问元素。
  • 一个有序的集合,字典会维护关键字的顺序,可按顺序遍历它们。
  • 像有偶数个元素的列表,奇数位存储名字(关键字)。
  • 与数组的区别:数组是变量的无序集合,而不是值的集合,而且不能嵌套。
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
关注
打赏
1655639048
查看更多评论
立即登录/注册

微信扫码登录

0.0361s