如何根据值与列表过滤字典

时间:2018-03-20 09:51:54

标签: python list dictionary

我需要创建一个新的字典,比较dict1和list1中的匹配值,并将dict1中的键和list1中的值传递给新字典。

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)]

result:
dict2 = {'F0': (117, 118),'F4': (557, 118)}

2 个答案:

答案 0 :(得分:4)

这可以使用词典理解来实现。

list1_set = set(list1)
res = {k: v for k, v in dict1.items() if v in list1_set}

list1被转换为理解中的O(1)查找集。这是可能的,因为list1的元素是元组,因此可以使用。

结果:

{'F0': (117, 118), 'F4': (557, 118)}

答案 1 :(得分:0)

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)]
print {k:v for k,v in dict1.items() if v in list1}    #python dict comprehension

<强>输出:

{'F0': (117, 118), 'F4': (557, 118)}