0

我试图通过一段时间使用POST方法搜索 a dictionaryinside a ,我正在使用postman执行此操作。搜索的示例如下:listURLURL

http://localhost:5000/api/v1/7/requests

其中7是一个 id ,如果它存在,它会被发布并在字典列表中搜索。这是dictionary我要搜索的示例列表。

[
        {
            "id": 1,
            "offer_details": "This offer cuts down 3% of the drive, you want ",
            "offer_name": "eid offer ",
            "offer_price": 8000
        },
        {
            "id": 2,
            "offer_details": "This offer cuts down 3% of the drive, you want ",
            "offer_name": "supper offer ",
            "offer_price": 8000
        },
        {
            "id": 3,
            "offer_details": "This offer cuts down 3% of the drive, you want ",
            "offer_name": "easter offer ",
            "offer_price": 8000
        }
    ]

所以下面是我的代码,如果 id 可用或不可用,我想调整它以很好地搜索列表。

目前代码没有很好地搜索列表

class RequestRideOffer(Resource):

    def post(self, rideId):

        parser = reqparse.RequestParser()
        parser.add_argument('token', location='headers')      
        args = parser.parse_args()

        if not args['token']:
            return make_response(jsonify({"message": "Token is missing"}), 401)
        decoded = decode_token(args['token'])
        if decoded["status"] == "Failure":
            return make_response(jsonify({"message": decoded["message"]}), 401)
        if decoded['isDriver'] == "False":
            return make_response(jsonify({"message": "Invalid for Drivers "}), 401)

                # return make_response(jsonify({"message": "Meal not found"}), 404)
                #performing a search for the rideId
        if not any(d['id'] == rideId for d in rides_list):
            return make_response(jsonify({"message": "Request has been made successfully."}), 400)
        else :
            return make_response(jsonify({"message": "Sorry,No ride offer available for your request."}), 400)


        return make_response(jsonify({"message": "Invalid request, please insert again."}), 400)

这就是我在上面的代码中搜索的方式,我该如何改进这段代码:

#performing a search for the rideId
    if not any(d['id'] == rideId for d in rides_list):
        return make_response(jsonify({"message": "Request has been made successfully."}), 400)
    else :
        return make_response(jsonify({"message": "Sorry,No ride offer available for your request."}), 400)
4

1 回答 1

1

也许您可以简单地使用in

if rideId in [x['id'] for x in rides_list]:
   ...

一些例子:

rideId = 2
rides_list = [
        {
            "id": 1,
            "offer_details": "This offer cuts down 3% of the drive, you want ",
            "offer_name": "eid offer ",
            "offer_price": 8000
        },
        {
            "id": 2,
            "offer_details": "This offer cuts down 3% of the drive, you want ",
            "offer_name": "supper offer ",
            "offer_price": 8000
        },
        {
            "id": 3,
            "offer_details": "This offer cuts down 3% of the drive, you want ",
            "offer_name": "easter offer ",
            "offer_price": 8000
        }
    ]

if rideId in [x['id'] for x in rides_list]:
    print('Found it!', rideId)
于 2018-06-19T13:29:33.397 回答