Как получить значения при выполнении нескольких условий в python - PullRequest
0 голосов
/ 04 августа 2020

Это мой код, и я хочу, чтобы

, если key-aadhar присутствует только во входных данных, тогда он должен вызывать функцию aadhar, (или) если он имеет key-aadhar и некоторые другие ключи - (fname, lname, dob) он должен вызывать функцию aadhar и функцию предварительной обработки (которая имеет ключи -fname, lname, gen, dob, client-type).

то же самое для key-pan, он должен вызовите функцию панорамирования, если только пользователь вводит pan. если пользователь вводит некоторые детали с помощью pan, она должна вызывать pan и preprocessfun c.

Если пользователь вводит только pan и aadhar, он должен вызвать pan и aadhar функции. Если он добавит несколько ключей с обоими из них, он должен будет вызвать все три функции.

   cust_data = {
        'fname' : data.get('firstName'),
        'lname' : data.get('lastName'),
        'gen' : data.get('gender'),
        'client_type' : data.get('cust_type'),
        'dob' : data.get('dob'),
        'aadhar': data.get('aadhar'),
        'pancard': data.get('pancard')}

Я сделал следующее:

if aadhar is not None and pancard is not None:         #list returns
            ret.append(value)
            ret_key.append(formatting_data[key])
            try:
                prepro=preprocess_user_data(ret,ret_key)
            except TypeError:
                res_total= jsonify((aadhar_check(aadhar),pan_check(pancard)))
                # return res_total
            else:
                res_total= jsonify((prepro,aadhar_check(aadhar),pan_check(pancard)))
                return res_total
        elif aadhar!=None:
            ret.append(value)
            ret_key.append(formatting_data[key])
            try:
                prepro=preprocess_user_data(ret,ret_key)
            except TypeError:
                res_total=jsonify(aadhar_check(aadhar))
                # return res_total
            else:
                res_total= str((prepro,aadhar_check(aadhar)))#must
                # return res_total
        elif pancard!=None:#tuple ruturns
            ret.append(value)
            ret_key.append( formatting_data[key])

            try:
                prepro=preprocess_user_data(ret,ret_key)

            except TypeError:
                res_total= (pan_check(pancard))
                # return res_total
            else:
                res_total= str((prepro,pan_check(pancard)))
                # return res_total
        elif value is not None:#required good
            ret.append(value)
            ret_key.append( formatting_data[key] )#storing key value and matching with dataframe      
            res_total= (preprocess_user_data(ret,ret_key))

Ответы [ 3 ]

0 голосов
/ 04 августа 2020

Как это?

if "aadhar" in the_dict and len(the_dict) == 1:
    # {"aadhar": 123}
elif "aadhar" in the_dict and len(the_dict) > 1:
    # {"aadhar": 123, "firstname": "ali", ...}
else:
    # {} or {"firstname": "ali", ...}
0 голосов
/ 04 августа 2020

Можно использовать любой оператор для проверки состояния препроцесса.

В каждом блоке if напишите свою функцию и верните ее.

 x = {
    "firstName": "raju",
    "lastName": "j",
    "gender": "female",
    "aadhar": "543467853498"
    }

keys = x.keys()
if('pan' in keys):
    print("Do the pan function and return")
if('aadhar' in keys):
    print("Do the aadhar function and return")
if any(preprocess in keys for preprocess in ["firstName", "lastName", "gender"]):
    print("Do preprocess")

Если у вас только PAN первое if будет запущено, и все не удастся.

Если у вас есть PAN и Aadhar, будут работать и первый, и второй if.

Если у вас есть любой из трех, будет запущен препроцесс.

Надеюсь, это проясняет.

0 голосов
/ 04 августа 2020

я думаю, вы слишком усложнили эту вещь.

это просто, я упоминаю logi c ниже.

if aadhar!=None:
    'run aadhar function'
if pancard!=None:
    'run pan funtion'
if details != None:
    'run preprocess funtion'

пожалуйста, не стесняйтесь комментировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...