字典的来源列表:
employees = [{'id':1, 'name': "Jonathan", 'last_name':"Wilkinson", "email":"jwilki@zbigg.com", 'phone':"98753215646", 'role':"Owner"},
{'id':2, 'name': 'Mary', 'last_name': 'Sue', 'email': 'jjeelasj221@zbigg.net', 'phone': "932342384758", 'role': 'Manager'},
{'id':3,'name': "Joanna", 'last_name': "Kenderson", 'email':'kjjsdakjae@kkzbigg.com', 'phone': '9876478398478', 'role': 'Employee'}
]
我想创建一个选择单个字典的理解并将其添加到包含单个字典的新变量中:
sel_employee = [employee for employee in employees if employee['id'] == 2]
emp_done = {}
for employee in sel_employee:
emp_done = employee
换句话说,如何将上述理解后的所有内容添加到所说的理解中?
目前没有emp_done
,它只是在列表中创建了一个单一的理解。
答案 0 :(得分:4)
这是另一种方法。
如果未找到sel_employee
是None
的字典,它也会将id == 2
设置为True
。
sel_employee = next((employee for employee in employees if employee['id'] == 2), None)
答案 1 :(得分:2)
这不仅是您想要的吗?
sel_employee = [employee for employee in employees if employee['id'] == 2][0]
答案 2 :(得分:0)
或者:
l = [employee for employee in employees if employee['id'] == 2]
print({1:l[0]}.get(len(l),l))
输出:
{'id': 2, 'name': 'Mary', 'last_name': 'Sue', 'email': 'jjeelasj221@zbigg.net',
'phone': '932342384758', 'role': 'Manager'}
答案 3 :(得分:0)
您可以使用简单的for
循环,并在满足条件时使用dict.update
后跟break
:
emp_done = {}
for employee in sel_employee:
if employee['id'] == 2:
emp_done.update(employee)
break
如果从不满足您的条件,emp_done
将保留为空字典。如果满足您的条件,emp_done
将仅给出第一个实例。
等效地,您可以将next
与根据@Ozzy's solution的生成器表达式一起使用。但是,生成器表达式的开销对于较大的列表可能是昂贵的。