Python 如果键不为';不存在于列表中
如果列表abc中不存在var['name'],我想从var中删除字典中的一个变量Python 如果键不为';不存在于列表中,python,Python,如果列表abc中不存在var['name'],我想从var中删除字典中的一个变量 abc = [123,345,678] var = [{'name':'123, 'age':12},{name:345, 'age':32},{name:789,'age':39}] 我尝试了以下方法 final = [{'name':'123, 'age':12},{name:345, 'age':32}] 它删除了一些dict,但只留下一个dict。下面是一个列表理解方法: for i,element i
abc = [123,345,678]
var = [{'name':'123, 'age':12},{name:345, 'age':32},{name:789,'age':39}]
我尝试了以下方法
final = [{'name':'123, 'age':12},{name:345, 'age':32}]
它删除了一些dict,但只留下一个dict。下面是一个列表理解方法:
for i,element in enumerate(abc):
if element['name'] in var.keys():
element['salary'] = '50000'
else:
abc.pop(i)
建议使用集合参考
你是如何解决这个问题的?请向我们展示您的尝试,并解释它到底是如何不起作用的您正在为每个迭代实例化一个新集合,因此它根本无助于时间复杂性。在列表中使用该集合之前,应该先实例化它。@blhsing有意义。纠正
final = [v for v in var if v['name'] in abc]
final = filter(lambda x: x['name'] in abc, var)
set_abc = set(abc)
final = [x for x in var if x['name'] in set_abc]