Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OptsParse属性检查。。我想_Python_Parsing_Dictionary_Arguments - Fatal编程技术网

Python OptsParse属性检查。。我想

Python OptsParse属性检查。。我想,python,parsing,dictionary,arguments,Python,Parsing,Dictionary,Arguments,我有一个opts解析。 例: 现在我想买一本字典。问题在于它是opts的一个属性。 所以我试着: for x in opts.__dict__.iterkeys(): if x = 'bblah': callfunction1(opts.bblah[0],opts.bblah[1]) if x = 'ablah': callfunction2(opts.ablah[0],opts.ablah[1]) if x = 'cblah':

我有一个opts解析。 例:

现在我想买一本字典。问题在于它是opts的一个属性。 所以我试着:

for x in opts.__dict__.iterkeys():
    if x = 'bblah':
        callfunction1(opts.bblah[0],opts.bblah[1])
    if x = 'ablah':
        callfunction2(opts.ablah[0],opts.ablah[1])
    if x = 'cblah':
        callfunction3(opts.cblah[0],opts.cblah[1])
这里的问题有两个方面

  • 我在opts元组/字典中有多个元素
  • 如何检查以确保这些对象具有值。否则我会明白,你不能调用没有值的值。我需要在这里进行“检查”,因为如果我在函数中进行检查,将导致一些严重错误
  • 我知道有人说这种方法通常是跳跃式的,而不是请求原谅,但我想先检查一下


    谢谢。

    我不确定我是否正确理解了您的问题,但这可能会给您一个提示:

    # map option name to function
    func_map = {'ablah': ablah,
            'bblah': bblah,
            'cblah': cblah}
    
    # filter out the options without argument
    # this may be redundant, optparse can make proper validations
    selected = filter(lambda x: x[1], opts.__dict__.items())
    
    for k, v in selected:
        func_map[k](*v)
    
    # map option name to function
    func_map = {'ablah': ablah,
            'bblah': bblah,
            'cblah': cblah}
    
    # filter out the options without argument
    # this may be redundant, optparse can make proper validations
    selected = filter(lambda x: x[1], opts.__dict__.items())
    
    for k, v in selected:
        func_map[k](*v)