0

我知道 d[key] 将获取 'd' 项并将它们作为键返回,但如果我只使用 d[key] 我总是会得到一个键错误。我只看到它与.get() 一起使用。例如,我在这里看到了另一个问题,我复制到这里学习:

myline = "Hello I'm Charles"

character = {}

for characters in myline:
    character[characters] = character.get(characters, 0) + 1

print character 

如果你可以单独使用 d[key] ,你能给我一些例子吗?如果我删除“character.get(characters, 0) + 1”,为什么上面的代码不起作用?

4

3 回答 3

1

当字典中不存在密钥时才会引发KeyError。

dict.get被解释为:

>>> print dict.get.__doc__
D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.

在您的特定示例中,您正在尝试计算每个字符的计数。由于 dict 最初是空的,因此您需要先设置键,然后再尝试获取它的值,然后向其添加 1。

所以,character[characters] = character.get(characters, 0) + 1也可以写成:

if characters in character:     #if key is present in dict
   character[characters] += 1
else:
   character[characters] = 0   #if key is not present in dict, then set the key first
   character[characters] += 1

因此,您可以看到dict.get保存了这些步骤,如果键存在则返回键的值,否则返回默认值0

但是,对于这个例子collections.Counter来说是最好的工具。

于 2013-08-13T05:17:01.587 回答
0

dict.get(a,b)表示如果 key a 不在 dict 中,将返回 value b,否则返回 key 的值a

虽然d[key]获取 key 的值,但如果 key 不在 dict 中,则会引发 keyerror

于 2013-08-13T05:15:53.643 回答
0

d.get(key, default)是字典的公共访问器 - 它提供了一种丢失密钥的机制。

于 2013-08-13T05:17:59.800 回答