基于某些条件从元组内部的元组中检索元素

2024-04-20 11:12:01 发布

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

我的数据结构如下

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

像这样的输入

input = "File.save.saveas'

我要检索整个字符串中最后一个字符串的关联函数。这里是“saveas”函数

我怎么得到那个函数?。提前谢谢。你知道吗


Tags: 函数字符串数据结构inputsearchsavedefedit
1条回答
网友
1楼 · 发布于 2024-04-20 11:12:01

有几个步骤:

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

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

  • 在主要选项上循环直到找到匹配项。

  • 在次要选项上循环直到找到匹配项。

  • 如果找不到匹配项,则引发一个值错误

下面是一种编码方法:

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')

相关问题 更多 >