如何在Tcl中创建哈希的哈希?MEM_GROUP哈希元素访问求助
Tcl中创建MEM_GROUP并访问Person3的DDR3
Tcl里没有专门的“哈希”类型,一般用关联数组或者**字典(dict)**来实现键值对结构,嵌套层级的话用字典会更直观。
1. 构建MEM_GROUP嵌套字典
假设你的表格是“人员-内存归属”的对应关系,用dict create就能快速构造嵌套结构:
# 创建包含人员与内存归属的MEM_GROUP字典 set MEM_GROUP [dict create \ Person1 [dict create ownership {DDR1 DDR2}] \ Person2 [dict create ownership {DDR2}] \ Person3 [dict create ownership {DDR3}] \ ]
2. 访问Person3的ownership下的DDR3
先提取Person3对应的内存列表,再从中获取DDR3:
# 第一步:拿到Person3的内存归属列表 set person3_mem_list [dict get $MEM_GROUP Person3 ownership] # 如果ownership里只有DDR3,直接取第一个元素即可 set target_ddr [lindex $person3_mem_list 0] puts "Person3拥有的DDR3: $target_ddr" # 要是列表里可能有多个内存,先检查DDR3是否存在再获取 if {[lsearch -exact $person3_mem_list DDR3] != -1} { set target_ddr DDR3 puts "找到Person3的DDR3: $target_ddr" }
备选方案:用关联数组实现
如果更习惯用扁平的哈希结构,可以用复合键来表示层级关系:
# 创建关联数组MEM_GROUP array set MEM_GROUP { Person1.ownership {DDR1 DDR2} Person2.ownership {DDR2} Person3.ownership {DDR3} } # 直接通过复合键访问Person3的内存列表,再提取DDR3 set person3_mem_list $MEM_GROUP(Person3.ownership) set target_ddr [lindex $person3_mem_list 0] puts "Person3的DDR3: $target_ddr"
内容的提问来源于stack exchange,提问作者Aarav Soni
相关产品推荐
相关产品推荐

