使用未绑定方法dict.get
(或dict.__getitem__
)和reduce
:
>>> # from functools import reduce # Python 3.x only
>>> reduce(dict.get, ['b', 'c'], {'a': 1, 'b': {'c': 2}})
2
>>> reduce(lambda d, key: d[key], ['b', 'c'], {'a': 1, 'b': {'c': 2}})
2
UPDATE
如果使用dict.get
并尝试访问不存在的键,它可以通过返回None
隐藏KeyError
:
>>> reduce(dict.get, ['x', 'c'], OrderedDict({'a': 1, 'b': {'c': 2}}))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: descriptor 'get' requires a 'dict' object but received a 'NoneType'
为了防止这种情况,使用dict.__getitem__
:
>>> reduce(dict.__getitem__, ['x', 'c'], OrderedDict({'a': 1, 'b': {'c': 2}}))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'x'
你的意思'DIC [ 'B'] [ 'C']','不DIC [ '一'] [ 'B']',对吧? – 2014-12-27 15:01:40