如何基于指定键列表从已有字典生成新字典?是否有非循环实现方式?
提取字典指定键的键值对:无需手动写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
相关产品推荐
相关产品推荐

