A-A+

TCL中的字典检测命令

2020年03月07日 脚本 阅读 898 views 次

1、确定字典元素的个数

这可以通过dict size命令完成,格式如下:

dict size dictionaryValue

例如:

dict size {firstname Ann surname Huan titleMiss}

→3

dict size {}

→0

2、检查字典中是否存在指定的关键词

这可以用dict exists命令完成,格式如下:

dict exists dictionaryValue key ?key ...?

如果它返回1,则dict get命令可成功地从这个字典中取得该关键词对应的值,如果返回0,则 dict get命令会失败,因为字典中没有那个关键字。例如:

set example {title Miss firstname Annsurname Huan}

dict exists $example firstname

→1

dict exists $example initial

→0

3、获得字典中所有关键字(关联值)的列表(按顺序)

这可以使用dict keys命令,格式如下:

dict keys dictionaryValue ?globPattern?

这个命令将字典的关键字组成列表,还可以通过globPattern参数,根据关键字与指定模式的 string match匹配情况进行筛选。继续上面那个示例:

dict keys $example

→title firstnamesurname

dict keys $example {*name}

→firstname surname

类似地,字典中的关联值也可以按顺序组成列表,即dict values命令,该命令也可以进行模式筛选。例如:

dict values $example

→Miss Ann Huan

dict values $example *n*

→Ann Huan

4、遍历字典的关键字和关联值,分别对它们执行一些代码

这可以使用 dict for命令,格式为:

dict for {keyVar valueVar} dictionaryValuebody

它获取一对变量的列表作为一个参数(一个是关键字,一个是与关键字相关联的值)。并获取一个字典以及构成循环块的Tcl脚本。该命令的返回值是空字符串。与 foreach相似,也可以使用break和continue来停止循环或跳到字典中的下一个关键字关联值对。例如,整齐地打印输出一个字典的内容。

dict for {key value} $dict {

puts [format "%s: %s" $key $value]

}

title: Miss

firstname: Ann

surname:Huan

5、对字典进行排序

利用字典会保持其关键字的顺序,可以方便地进行排序操作。从第一个字典创建第二个字典,关键字已经处于排序状态,然后使用dictmerge命令与第一个字典的值组合。例如:

proc sortDict {dictionary} {

set sorted {}

foreach key [Isort [dict keys $dictionary]]{

dict set sorted $key {}

}

return [dict merge $sorted $dictionary]

}

sortDict $example

→firstname Annsurname Huan title Miss

个人公众号“数字化设计CAX联盟”,欢迎关注,共同交流
标签:
为您推荐:

给我留言

© 坐倚北风 版权所有 严禁镜像复制 苏ICP备15034888号. 基于 Ality 主题定制 AliCMS
联系邮箱:leanwind@163.con,微信公众号:数字化设计CAX联盟

用户登录

分享到: