如果列表中不存在键,则从列表字典中删除字典

时间:2018-12-13 18:41:35

标签: python

abc = [123,345,678]
var = [{'name':'123, 'age':12},{name:345, 'age':32},{name:789,'age':39}]

如果var ['name']在列表abc中不存在,我想从var中删除字典。

final = [{'name':'123, 'age':12},{name:345, 'age':32}]

我尝试了以下

for i,element in enumerate(abc):
   if element['name'] in var.keys():
      element['salary'] = '50000'
   else:
       abc.pop(i)

它删除了一些字典,但留下了一个字典

3 个答案:

答案 0 :(得分:4)

这是一个列表理解方法:

final = [v for v in var if v['name'] in abc]

答案 1 :(得分:3)

final = filter(lambda x: x['name'] in abc, var)

答案 2 :(得分:1)

推荐使用集合参考Complexity of *in* operator in Python

set_abc = set(abc)
final = [x for x in var if x['name'] in set_abc]