我知道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”,为什么上述代码不起作用?
答案 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)
是字典的公共访问者 - 它提供了密钥丢失的机制。