Как использовать строку в качестве параметра функции в Python и иметь переменное количество параметров
У меня есть функция с именем filter, которая принимает ряд параметров в формате name=value. У меня есть 2 списка: имена и значения (давайте назовем их x и y), я должен быть в состоянии передать их в функцию.
Когда я просто передаю строку, как в примере ниже, это выдает мне ошибку:
x = ['t', 't2']
y = [w, w2]
filter(x[0]=y[0], x[1]=y[1])
SyntaxError: ключевое слово не может быть выражением
Я также должен был бы быть в состоянии передать в произвольной сумме, для размера списков. Как я могу сделать эту работу?
2 ответа
Решение
Использование **kwargs
:
kwargs = {x[0]: y[0], x[1]: y[1]}
filter(**kwargs)
Вы, вероятно, не хотите иметь функцию с именем filter, поскольку она будет перезаписывать встроенную функцию фильтра python. Но в противном случае прочитайте об использовании *args и ** kwargs, звучит как то, что вам нужно.