d [key]操作是否必须与.get()一起使用?

时间:2013-08-13 05:09:27

标签: python key

我知道d [key]会接受'd'项并将它们作为键返回,但如果我只使用d [key],我总会得到一个keyerror。我只看到它与.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”,为什么上述代码不起作用?

3 个答案:

答案 0 :(得分: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保存这些步骤,如果密钥存在则返回key的值,否则返回默认值0

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

答案 1 :(得分:0)

dict.get(a,b)表示如果密钥a不在dict中,则返回值b,否则返回密钥a的值。

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

答案 2 :(得分:0)

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