根据某些条件从元组内的元组中检索元素

时间:2016-05-02 16:36:02

标签: python tuples

我的数据结构如下,

def fun():
    print "fun"
d=[('File',(('save',fun),('saveas',fun),)),
        ('Edit',('search',fun))]

鉴于这样的输入说

  

input =“File.save.saveas'

我想检索整个字符串中最后一个字符串的关联函数。这里'saveas'功能

我如何获得该功能?提前谢谢。

1 个答案:

答案 0 :(得分:0)

有几个步骤:

  • 您可以使用str.split拆分.分隔符上的用户输入。

  • 使用[0]访问第一个字段,使用[-1]访问最后一个字段。

  • 循环选择主要选项,直至找到匹配项。

  • 循环查看次要选项,直至找到匹配项。

  • 如果未找到匹配项,请引发 ValueError

以下是编码的一种方法:

def save_it():
    print 'Saving'

def edit_it():
    print 'Edit'

menu = [
    ('File', (
      ('save', save_it),
      ('saveas', save_it),
      )),
    ('Edit', (
      ('search', edit_it),
      )),
]

def dispatch(user_input):
    fields = user_input.split('.')
    major_choice = fields[0]
    minor_choice = fields[-1]

    for major, minors in menu:
        if major == major_choice:
            for minor, func in minors:
                if minor == minor_choice:
                    func()
                    return
            raise ValueError('No matching minor option: %r' % minor_choice)
    raise ValueError('No matching major option: %r' % major_choice)

if __name__ == '__main__':
    dispatch('File.save.saveas')
    dispatch('Edit.search')
    dispatch('Edit.cut')