如何在Python中不使用循环简洁地从旧字典生成指定字段的新字典?
从字典中提取指定键生成新字典的简洁实现
以下几种都是无需显式写for循环(底层实现仍有循环,但代码写法简洁)的方案,适合Python新手快速实现需求:
- 字典推导式(推荐)
这是Python中最直观简洁的写法,可读性拉满,完全适配你的需求:
a = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6} target_keys = ['b','c','d'] b = {k: a[k] for k in target_keys}
如果担心目标键在原字典中不存在(避免触发KeyError),可以额外加存在性判断:
b = {k: a[k] for k in target_keys if k in a}
- 使用
dict()结合生成器表达式
逻辑和字典推导式一致,只是语法形式不同:
b = dict((k, a[k]) for k in target_keys) # 同样支持存在性判断 b = dict((k, a[k]) for k in target_keys if k in a)
- 利用
operator.itemgetter(批量取值场景适用)
如果能确保所有目标键都存在于原字典中,可以用这个方法快速批量取值,再结合zip生成字典:
from operator import itemgetter values = itemgetter(*target_keys)(a) b = dict(zip(target_keys, values))
内容的提问来源于stack exchange,提问作者Tien Manh
相关产品推荐
相关产品推荐

