如何根据值与列表筛选字典并生成匹配键值对的新字典
搞定这个字典匹配问题很简单!
嘿,我明白你要做的事——从dict1里挑出那些值在list1里的键值对,拼成新字典dict2对吧?给你几个实用的方法:
首选:一行搞定的字典推导式
Python的字典推导式就是干这个的,简洁又高效:
dict1 = {'F0': (117, 118), 'F1': (227, 118), 'F2': (337, 118), 'F3': (447, 118), 'F4': (557, 118)} list1 = [(117, 118), (447, 228), (227, 448), (557, 558),(557, 118)] dict2 = {k: v for k, v in dict1.items() if v in list1} print(dict2) # 输出正好是你要的: {'F0': (117, 118), 'F4': (557, 118)}
更直观的循环写法
要是你觉得推导式有点抽象,用普通循环也一样能实现,步骤更清晰:
dict2 = {} # 遍历原字典的每一组键值对 for key, value in dict1.items(): # 检查当前值是否在目标列表里 if value in list1: # 符合条件就加到新字典里 dict2[key] = value
小优化:提速小技巧
如果你的list1特别长,建议先把它转成集合——集合的成员查找速度比列表快太多了,处理大数据量的时候能明显感觉到差异:
# 先转集合 value_set = set(list1) dict2 = {k: v for k, v in dict1.items() if v in value_set}
内容的提问来源于stack exchange,提问作者Luis Cazares
相关产品推荐
相关产品推荐

