Python dict.get('key') versus dict['key']
本问题已经有最佳答案,请猛点这里访问。
为什么会引发keyerror:
1 2 | d = dict() d['xyz'] |
但这不是吗?
1 2 | d = dict() d.get('xyz') |
我也很好奇描述符是否在这里起作用。
这就是如何定义
从python文档中:
Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a KeyError.
默认的"未找到"返回值是
1 2 | d = dict() d.get('xyz', 42) # returns 42 |
括号访问没有默认值,但
1 2 3 4 | Help on built-in function get: get(...) D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. |
我相信你的开场白回答得很好,但我看不出有什么回应
I'm also curious if descriptors play a role here.
从技术上讲,描述符在这里起到了一定的作用,因为所有的方法都是用描述符隐式实现的,但是没有明确的显式描述符被使用,而且它们与你质疑的行为无关。
仅仅因为[1]键不在地图中,[2]这两个操作的性质不同。
从dict映射类型:
1 | d[key] |
用钥匙返回D项。如果键不在映射中,则引发keyError。
1 | get(key[, default]) |
如果键在字典中,则返回键的值,否则为默认值。如果未给定默认值,则默认为无,因此此方法不会引发keyError。