首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用loop ()而不是循环填充dict

使用loop ()而不是循环填充dict
EN

Stack Overflow用户
提问于 2022-07-15 13:17:43
回答 2查看 36关注 0票数 -1

编辑:我更新了我的问题,以澄清我的目标。

是否有一种方法可以通过使用减()或其他快速方法(而不是for循环)来加速这段代码?我看了许多类似的问题,但没有找到答案。

代码语言:javascript
运行
复制
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}
EN

回答 2

Stack Overflow用户

发布于 2022-07-15 13:32:53

如果您想知道如何使用functools.reduce

代码语言:javascript
运行
复制
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)

代码语言:javascript
运行
复制
{'a': 1, 'c': 3, 'd': None}
票数 1
EN

Stack Overflow用户

发布于 2022-07-15 13:30:46

你最好使用@Peter的答案,但这里有一个使用functools.reduce的选项。

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72994623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档