Я делаю проблему с хакерами, и я решил это, но используя что-то, что, по моему мнению, очень неряшливо.Возможно ли сопоставить словарь с объектными операциями в 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