我可以创建一个关联数组并将一个整数分配给一个包含单引号的键:
$ declare -A dict
$ var="john's"
$ dict[$var]=1
$ echo ${dict[$var]}
1
$ declare -p dict
declare -A dict=(["john's"]="1" )
Run Code Online (Sandbox Code Playgroud)
但是当我尝试增加它的价值时:
$ (( dict[$var]++ ))
bash: ((: dict[john's]++ : bad array subscript (error token is "dict[john's]++ ")
$ (( dict["$var"]++ ))
bash: ((: dict[john's]++ : bad array subscript (error token is "dict[john's]++ ")
$ (( dict["${var}"]++ ))
bash: ((: dict[john's]++ : bad array subscript (error token is "dict[john's]++ ")
Run Code Online (Sandbox Code Playgroud)
我总是得到同样的错误。我究竟做错了什么?
阅读Charles Dierbach撰写的"使用Python的计算机科学导论 "一书,我得到一个问题:
所以引用只是对象内存中的地址.
现在,如果我没有弄错的话,当我创建一个变量时:
>>> a = 3
Run Code Online (Sandbox Code Playgroud)
名称a由Python在命名空间中自动放置.
如果我做:
>>> id(a)
4548344816
Run Code Online (Sandbox Code Playgroud)
我得到了对象3的内存地址,即a引用的对象.
所以我想知道的是,名称a和参考值是如何相关的.
我猜测,当名称放入命名空间时,它包含两件事:
这个名字本身.
的基准值(对象的ID)
像一对可能:a:reference value?
如果是这样,是否有一些instrospection工具来查看命名空间中的条目是什么样的?
我正在学习如何使用字符串format方法,我发现了一些我不理解的东西.当我做:
>>> s = "My {comp[b]}"
>>> s.format(comp = {'a': 'laptop', 'b': 'desktop'})
'My desktop'
Run Code Online (Sandbox Code Playgroud)
我得到了预期的结果.但是当我尝试从方法中定义字典时,只是使用了里面的名字:
>>> comp = {'a': 'laptop', 'b': 'desktop'}
>>> s = "My {comp[b]}"
>>> s.format(comp)
Run Code Online (Sandbox Code Playgroud)
我得到KeyError: 'comp'.为什么?