<分区>
在 Python 2 中,我可以执行以下操作:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> map(d.update, extras)
>> d['c']
>> 4
在 Python 3 中得到一个 KeyError
:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> map(d.update, extras)
>> d['c']
>> KeyError: 'c'
我想在 Python 3 中实现与在 Python 2 中相同的行为。
我知道 Python 3 中的 map 将返回一个迭代器(惰性求值等等),必须迭代它才能更新字典。
我原以为 d['c']
键查找会以某种方式触发 map 迭代,但事实并非如此。
是否有一种 pythonic 方法可以在不编写 for 循环的情况下实现这种行为, 与 map 相比,我发现它过于冗长。
我想到了使用列表理解:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> [x for x in map(d.update, extras)]
>> d['c']
>> 4
但它看起来不像pythonic。