python - 比较2个字典并提取python中的其他值
问题描述
我有一本父母词典
parent = [
{
"user": "a@gmail.com",
"type": "Product Team",
"message": "Developer",
"employeeId": 101
},
{
"user": "b@gmail.com",
"type": "Product Team",
"message": "Developer",
"employeeId": "102"
}
]
我的输入是
body = {"employeeId":102}
我的输入会因测试而异
body = {"employeeId":101}
body = {"employeeId":103}
我在父字典中搜索并检索user
employeeId
和message
是否匹配employeeId
- 我需要遍历父字典
- 一旦我找到了第一场比赛,我就必须跳出循环
- 如果不是我需要继续循环
- 如果成功我需要返回字典
- 如果
employeeId
在父字典中不匹配,那么它应该说employeeId 不存在
我的代码如下
def noid():
return "No ID"
def new_f():
for conf in parent :
if int(conf["employeeId"]) == int(body['employeeId']):
user = conf['user']
employeeId= conf["employeeId"]
message = conf["message"]
return {'user': user, 'employeeId': employeeId, 'message': message}
break
else:
continue
return noid()
new_f()
在我的代码employeeId:101
中,只有第一个元素有效。/只有第一个字典成功
解决方案
您正在寻找一个for/else
构造:
for conf in parent:
if int(conf["employeeId"]) == int(body['employeeId']):
user = conf['user']
employeeId = conf["employeeId"]
message = conf["message"]
break
else:
print("No ID found")
根据代码在函数中的已编辑问题,您可以简单return
地破坏循环,因此没有else
必要:
def new_f():
for conf in parent:
if int(conf["employeeId"]) == int(body['employeeId']):
user = conf['user']
employeeId= conf["employeeId"]
message = conf["message"]
return {'user': user, 'employeeId': employeeId, 'message': message}
return "No ID"
推荐阅读
- javascript - 如何使用 sinon 正确模拟 ES6 类
- mysql - Mac osx 上的 Apache 超集
- deployment - 在 glassfish 上进行有条件的取消部署
- javascript - Ajax条件在jquery mobile phonegap中不起作用
- c# - 如何使用注册表将应用程序的路径保存到变量中
- oracle-apex - 如何在单独的窗口中调用 APEX 页面,同时从 EBS 调用它
- wso2 - 限制数据未发布到所有活动节点
- ffmpeg - 使用 ffmpeg 转换为 hls 格式时块大小的最小持续时间
- javascript - 用于查找两个高度之间的线的数据结构
- php - 使用三元运算符更改输入属性