在 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']
键查找会以某种方式触发映射迭代,但事实并非如此。
有没有一种 Pythonic 方法可以在不编写 for 循环的情况下实现这种行为,我发现它与 map 相比显得冗长。
我曾想过使用列表推导:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> [x for x in map(d.update, extras)]
>> d['c']
>> 4
但这似乎不是pythonic。