我的数据结构如下,
def fun():
print "fun"
d=[('File',(('save',fun),('saveas',fun),)),
('Edit',('search',fun))]
鉴于这样的输入说
input =“File.save.saveas'
我想检索整个字符串中最后一个字符串的关联函数。这里'saveas'功能
我如何获得该功能?提前谢谢。
答案 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')