我正在尝试使用词典,我可以浏览dict set
命令。使用此命令,我可以为现有密钥设置新值。
当我尝试为多个键设置值时,我得到"missing value to go with key"
我已经用两种方式尝试了这些命令,
#keys list and then values list
dict set userinfo name age VIGNESH 23
#key and value pair
dict set userinfo name VIGNESH age 23
我查看了dict set
的手册页,找到了以下内容
dict set dictionaryVariable key ?key ...? value
This operation takes the name of a variable containing a dictionary value and places an updated dictionary value in that variable containing a mapping from the given key to the given value. When multiple keys are present, this operation creates or updates a chain of nested dictionaries.
这就是我正在尝试的
% set userinfo { name DINESH age 24 dob {16/05/1990} state Chennai }
name DINESH age 24 dob {16/05/1990} state Chennai
% dict get $userinfo
name DINESH age 24 dob 16/05/1990 state Chennai
% dict set userinfo state Madurai
name DINESH age 24 dob 16/05/1990 state Madurai
% dict get $userinfo
name DINESH age 24 dob 16/05/1990 state Madurai
% dict set userinfo name age VIGNESH 23
missing value to go with key
% dict set userinfo name VIGNESH age 23
missing value to go with key
%
答案 0 :(得分:2)
当您使用多个键时,这意味着您正在尝试访问嵌套dicts的第二个,第三个等。考虑:
% set userinfo [dict create user {name DINESH surname A} age 24 dob 16/05/1990 state Chennai]
user {name DINESH surname A} age 24 dob 16/05/1990 state Chennai
% dict set userinfo user surname B
user {name DINESH surname B} age 24 dob 16/05/1990 state Chennai
如您所见,以上内容会将密钥surname
的较高级别值中的密钥user
的值更改为B
。
或者如果您愿意,首先检查user
(给出一个字典)的值,然后(从该字典开始)surname
并更改该值。
请注意,文档提到了嵌套字典和单个值。
答案 1 :(得分:1)
您也可以使用
dict with userinfo {
set name VIGNESH
set age 23
}
command-subcommand dict with
将字典的值映射到以键命名的变量,并评估脚本体。如果该脚本更改了变量的值,则字典中的值也将更改。请注意,在评估脚本之后,变量将继续存在(但更改它们的值将不再对字典中的值产生任何影响),并且将覆盖具有相同名称的任何变量。
对于Jerry示例中的嵌套字典,您可以指定一串键来达到您想要的级别:
set userinfo [dict create user {name DINESH surname A} age 24 dob 16/05/1990 state Chennai]
dict with userinfo user {
set name VIGNESH
set surname B
}