Skip to main content
 首页 » 编程设计

python之是否可以将字典映射到python中的对象操作

2025年05月04日30artech

我正在做一个 hackerrack 问题,我解决了它,但使用了一些我认为非常不符合 pythonic 的东西。

因此,我们的想法是解析为您提供命令和列表操作的行,并在列表上执行它。我最终得到了这个丑陋的 if/else 逻辑:

l = [] 
num_commands = int(raw_input()) 
 
for i in range(num_commands): 
    current = raw_input().split()     
    if current[0] == 'insert': 
        params = map(int, current[1:]) 
        l.insert(params[0], params[1]) 
 
    elif current[0] == 'print': 
        print l 
 
    elif current[0] == 'sort': 
        l.sort() 
 
    elif current[0] == 'pop': 
        l.pop() 
 
    elif current[0] == 'reverse': 
        l.reverse()     
 
    elif current[0] == 'remove': 
        l.remove(int(current[1])) 
 
    elif current[0] == 'append': 
        l.append(int(current[1])) 

这很丑陋,但它确实有效。我想知道是否有更优雅的方法来做同样的事情,比如使用一些字典查找,将字符串绑定(bind)到特定对象实例的某个成员函数?

请您参考如下方法:

函数(和方法)都可以引用,是的。您可以在列表对象上创建方法字典,例如 lookup = {'remove': l.remove}然后可以与 lookup['remove'](val) 一起使用.

此外,您可以使用 getattr 从带有字符串的对象中检索属性:

getattr(alist, 'remove')(val)