Python 迭代列表并比较它';s值与dict

Python 迭代列表并比较它';s值与dict,python,list,python-2.7,dictionary,Python,List,Python 2.7,Dictionary,我正在处理1。字典列表和2。列表我正在努力: 1.遍历列表(列表1), 2.将列表1的值与API响应的ID匹配,如果找到-将整个dict放入新的dict中 3.否则跳过 Json格式的API响应: list_of_dict=[{"id":1500, "f_name": "alex", "age": 25 }, {"id" :1501, "f_name":"Bob", "age": 30 },

我正在处理1。字典列表和2。列表我正在努力:
1.遍历列表(列表1),
2.将列表1的值与API响应的
ID
匹配,如果找到-将整个dict放入新的dict中 3.否则跳过

Json格式的API响应:

   list_of_dict=[{"id":1500,
      "f_name": "alex",
       "age": 25
      },

      {"id" :1501,
       "f_name":"Bob",
       "age": 30
      },
      {"id" :1600,
       "f_name":"Charlie",
       "age": 35
      }
      ...
     ]
和列表1:

list1=[1500,1501,1211.....]
据此,
1500和1501
出现在dict的列表中,这样整个dict将添加到新dict中

我的尝试:

new_dict=dict()
for i,val in enumerate(list1):
    #assuming val found in dict
    #so put it in new dict
    print i ,"=",val
    new_dict.update({"id": val,"name":name, "age":age})
我看到的是这段代码只提取了列表的最后一项,并更新了dict。。但在我的例子中,新字典将包含两个id为
1500
1501
的字典。我错过了什么

    list_of_dict = [{"id":1500,
                     "f_name": "alex",
                     "age": 25
                     },

                     {"id" :1501,
                      "f_name":"Bob",
                      "age" 30
                     },
                     {"id" :1600,
                      "f_name":"Charlie",
                      "age" 35
                     }
                     ...
                  ]

dicts = {d['id']:d for d in list_of_dict}
list1=[1500,1501,1211.....]

answer = [dicts[k] for k in list1 if k in dicts]
查看python内置的有用且简单的过滤器函数。它迭代一个iterable(list),只返回为所提供函数返回true的项

在这种情况下,我们的过滤功能是:

lambda x: x['id'] in list1

您可以通过简单的列表理解来实现这一点,通过DICT的id是否在列表中来过滤DICT:

result = [d for d in list_of_dict if d["id"] in list1]
如果您的
list1
较大,您可能希望首先将其转换为
集合
,以便更快地查找:

list1_as_set = set(list1)
result = [d for d in list_of_dict if d["id"] in list1_as_set]

假设
list1=[15001501]
(因为这两个都在dict的示例
list\u
)--您希望
new\u dict
在处理后是什么?我想OP希望输出是一个列表。更新操作符覆盖
list1_as_set = set(list1)
result = [d for d in list_of_dict if d["id"] in list1_as_set]