在python中当多个条件为真时如何获取值

2024-06-08 04:08:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码,我想要的是

如果键aadhar仅存在于输入中,那么它应该调用aadhar函数,(或者)如果它有键aadhar和一些其他键-(fname,lname,dob),它应该调用aadhar函数和预处理函数(其中有键-fname,lname,gen,dob,client type)

与键pan相同,如果只有用户输入pan,则应调用pan函数。如果用户使用pan输入某些详细信息,则应调用pan和Preprefunc

如果用户只输入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))

Tags: key函数datagetreturnvaluecheckres
3条回答

我觉得你把事情弄得太复杂了

这很简单,我在下面提到逻辑

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

请随意评论

可以使用任何运算符检查预处理条件

在每个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将运行,所有If都将失败

如果您有PAN和Aadhar,则第一个和第二个If都将运行

如果您有这三个选项中的任何一个,则会运行预处理

希望这能澄清

像这样

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", ...}

相关问题 更多 >

    热门问题