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

标签 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)}

最佳答案

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

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

关于python - 如何根据值与列表过滤字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49380994/

相关文章:

python - Sqlalchemy 核心 - 动态 SQL 查询和转义值

python - 用于异步周期性任务的 Django channel

java - 如何将一个 HashMap 列表中的不同值添加到另一个 HashMap 列表

c# - 将列表的 n 个元素复制到新列表

python - 从字典中提取部分值

jQuery 影响与单击或悬停元素具有相同类的元素

python - 如何在 gtk.ScrolledWindow 内的 GtkTreeView 中显示列标题?

python - PyQt5在numpy数组中设置RGBA像素

python - 如何逐步消除python列表中的项目?

python - Pandas:迭代连接存储在数据框字典中的列