编辑:我更新了我的问题,以澄清我的目标。
是否有一种方法可以通过使用减()或其他快速方法(而不是for循环)来加速这段代码?我看了许多类似的问题,但没有找到答案。
old_dict = {'a': 1, 'b': 2, 'c': 3}
keys = ['a', 'c', 'd']
new_dict = {}
for key in keys:
new_dict[key] = old_dict.get(key)
print(new_dict)
# prints:
# {'a': 1, 'c': 3, 'd': None}发布于 2022-07-15 13:32:53
如果您想知道如何使用functools.reduce。
import functools
old_dict = {'a': 1, 'b': 2, 'c': 3}
keys = ['a', 'c', 'd']
res = functools.reduce(lambda d,v: {**d, **{v : old_dict.get(v, None)}}, keys, {})
print(res){'a': 1, 'c': 3, 'd': None}发布于 2022-07-15 13:30:46
你最好使用@Peter的答案,但这里有一个使用functools.reduce的选项。
from functools import reduce
old_dict = {'a': 1, 'b': 2, 'c': 3}
keys = ['a', 'c', 'd']
def func(dct, key, old_dict=old_dict):
dct[key] = old_dict.get(key)
return dct
new_dict = reduce(func, keys, {})
print(new_dict)https://stackoverflow.com/questions/72994623
复制相似问题