首页 > 解决方案 > 比较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 employeeIdmessage是否匹配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中,只有第一个元素有效。/只有第一个字典成功

标签: python

解决方案


您正在寻找一个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"

推荐阅读