Использовать строковую переменную ** kwargs как именованный аргумент

Я пытаюсь найти способ перебрать файл конфигурации json и использовать имя ключа в качестве имени аргумента для метода, который использует ** kwargs. Я создал файл конфигурации json и использовал ключевые имена как методы. Я просто добавляю «set_» к имени ключа, чтобы вызвать правильный метод. Я конвертирую json в словарь, чтобы перебирать любые значения по умолчанию. Я хочу передать имена аргументов в ** kwargs строковой переменной. Я попытался передать словарь, но мне это не кажется.

user_defaults = config['default_users'][user] for option_name, option_value in user_defaults.iteritems(): method = "set_" + option_name callable_method = getattr(self, method) callable_method(user = user, option_name = user_defaults[option_name]) 

Вызов вызываемого метода выше передает «option_name» как фактическое имя kwarg. Я хочу передать его так, чтобы, когда «shell» = имя_параметра, оно передается как имя строки для имени аргумента. Ниже приведен пример. Таким образом, я могу перебирать любые ключи в конфиге и не беспокоиться о том, что я ищу в любом методе, который я пишу, чтобы что-то выполнить.

 def set_shell(self, **kwargs): user = kwargs['user'] shell = kwargs['shell'] ## Do things now with stuff 

Любая помощь приветствуется. Я новичок в python и все еще изучаю, как делать вещи в стиле pythonic.

Если я правильно понимаю, что вы просите, вы можете просто использовать синтаксис ** на вызывающей стороне для передачи dict, который преобразуется в kwargs.

 callable_method(user=user, **{option_name: user_defaults[option_name]})