什么dict.get()方法?
如前所述,该get方法包含一个附加参数,指示缺少的值。从文档中
get(key[, default])
  
  如果key在字典中,则返回key的值,否则返回默认值。如果未提供default,则默认为None,因此此方法永远不会引发KeyError。
一个例子可以是 
>>> d = {1:2,2:3}
>>> d[1]
2
>>> d.get(1)
2
>>> d.get(3)
>>> repr(d.get(3))
'None'
>>> d.get(3,1)
1
  哪里有速度改进?
如前所述这里,
  似乎所有这三种方法现在都表现出相似的性能(彼此之间约占10%),或多或少地与单词列表的属性无关。
以前的get速度要慢得多,但是现在速度几乎可以与返回默认值的其他优点相媲美。但是要清除所有查询,我们可以在相当大的列表上进行测试(请注意,该测试仅包括查找所有有效键)
def getway(d):
    for i in range(100):
        s = d.get(i)
def lookup(d):
    for i in range(100):
        s = d[i]
现在使用以下命令计时这两个功能 timeit
>>> import timeit
>>> print(timeit.timeit("getway({i:i for i in range(100)})","from __main__ import getway"))
20.2124660015
>>> print(timeit.timeit("lookup({i:i for i in range(100)})","from __main__ import lookup"))
16.16223979
如我们所见,由于没有函数查找,因此查找比获取更快。可以看出来dis
>>> def lookup(d,val):
...     return d[val]
... 
>>> def getway(d,val):
...     return d.get(val)
... 
>>> dis.dis(getway)
  2           0 LOAD_FAST                0 (d)
              3 LOAD_ATTR                0 (get)
              6 LOAD_FAST                1 (val)
              9 CALL_FUNCTION            1
             12 RETURN_VALUE        
>>> dis.dis(lookup)
  2           0 LOAD_FAST                0 (d)
              3 LOAD_FAST                1 (val)
              6 BINARY_SUBSCR       
              7 RETURN_VALUE  
  在哪里有用?
每当您要查找字典时都想提供默认值时,它将很有用。这减少了
 if key in dic:
      val = dic[key]
 else:
      val = def_val
一行 val = dic.get(key,def_val)
  在哪里没有用?
每当您想返回 KeyError说明该特定键不可用时。返回默认值还会带来一个风险,即某个默认值也可能是键!
  是否有可能具有get类似功能dict['key']?
是! 我们需要实施__missing__在dict子类中实现。
一个示例程序可以是
class MyDict(dict):
    def __missing__(self, key):
        return None
一个小示范可以
>>> my_d = MyDict({1:2,2:3})
>>> my_d[1]
2
>>> my_d[3]
>>> repr(my_d[3])
'None'
               
              
dictionary["foo"]却dictionary.get("foo")表现不同。