You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于指定键列表从已有字典生成新字典?是否有非循环实现方式?

提取字典指定键的键值对:无需手动写for循环的简洁方法

你完全不用手动写for循环,Python有几种更简洁的方式直接实现需求:

1. 字典推导式(推荐)

这是最直观且Pythonic的写法,语法简洁可读性强:

def main():
    original_dict = {'acct_number':'10202','acct_name':'abc','v1_rev':'30000','v2_rev':'4444',
                     'v3_rev':'676373'}
    vendors_revenue_list = ['v1_rev','v2_rev','v3_rev']
    
    # 字典推导式生成目标字典
    dict2 = {key: original_dict[key] for key in vendors_revenue_list}
    print(dict2)

if __name__ == '__main__':
    main()

输出:

{'v1_rev': '30000', 'v2_rev': '4444', 'v3_rev': '676373'}

2. 结合dict()与生成器表达式

如果偏好更简洁的写法,可以用dict()包裹生成器表达式:

dict2 = dict((key, original_dict[key]) for key in vendors_revenue_list)

3. 使用operator.itemgetter

当需要提取大量键时,这种方法效率更高,适合批量操作:

from operator import itemgetter

# 先获取对应键值对的元组,再转为字典
dict2 = dict(zip(vendors_revenue_list, itemgetter(*vendors_revenue_list)(original_dict)))

注意事项

如果列表中存在原字典没有的键,以上方法会抛出KeyError。若需要忽略不存在的键,可以在推导式里加判断:

dict2 = {key: original_dict[key] for key in vendors_revenue_list if key in original_dict}

内容的提问来源于stack exchange,提问作者pbh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:07:23