我正在做一個黑客問題,我解決了它,但使用了一些我認爲非常不合理的東西。是否有可能將字典映射到Python中的對象操作
所以,這個想法是解析一個行,它給你一個命令和列表上的操作,並在列表中執行它。我結束了這個難看的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]))
這是醜陋的,但它的工作原理。我想知道是否有更好的方法來做同樣的事情,可能使用一些字典查找,它將字符串綁定到某個特定對象實例的某個成員函數上?
只是一個建議,如果你在創建你的字典時沒有'l',你可以使用'{'remove':lambda l,i:l.remove(i)}'或類似的方法來刪除依賴於變量名 – user2085282
@ user2085282 - 是的,但是你必須用'lookup ['remove'](alist,val)''調用它。如果修改了多個列表,那麼也可以工作,但如果它總是單個列表,則用戶正在修改發佈的解決方案的工作原樣。 –
哇,這很酷!謝謝! – Luca