Как передать параметры в виде словаря в функцию?
Суть: Нужна возможость использовать функцию как самостоятельно (просто передать в нее параметры), так и внутри большой функции (передать в большую функцию список словарей, чтобы рабочая функция «съела» ключи как параметры).
Вопрос: Есть ли возможность передать в функцию список словарей, чтобы она нашла соответствия своих параметров в ключах словаря? Или же, обработать словарь перед подачей в функцию, чтобы он передался не в формате «ключ:значение», а формате «ключ=значение»?
Пример кода:
subparams = [< 'param1': 12, 'param2': 'smth' >, < 'param1': 15, 'param3': 2535 >] # Большая функция def main_function(main_param, subparams): # Тут что-то происходит # Прохожусь по словарям в списке for sub in subparams: # Передаю словарь в функцию subfunction(sub) # Что-то возвращается # Рабочая функция def subfunction(param1=1, param2='', param3=1000): # Тут тоже что-то происходит и возвращается
Если есть более адекватное решение или я упускаю какую-то важную деталь — буду благодарен за любой совет 🙂
- Вопрос задан более трёх лет назад
- 505 просмотров
Как передать словарь в функцию в Python?
Наиболее простой способ передать словарь в функцию в Python – это передать его как аргумент:
def my_function(my_dict): print(my_dict) my_dict = 'key1': 'value1', 'key2': 'value2'> my_function(my_dict) # => my_function('key3': 'value3'>) # =>
Как передавать в функцию имя словаря?
Добрый день. Возникла проблема с kwargs в Python, искал в инете, но не нашел ответ. При вызове функции python выдает ошибку от том, что ждет 0 аргументов, а передан 1. Если передаю вместо имени словаря, сам словарь, то ошибок нет, но мне бы хотелось передавать именно имя словаря. Объясните в чём загвоздка. Заранее спасибо 🙂
people = < 'josh': 'man', 'jack': 'man', 'anna': 'woman' >def people(**kwargs): for name, sex in kwargs.items(): print(name + ' is a ' + sex) people(people)
- Вопрос задан более трёх лет назад
- 179 просмотров
python: передача в функции параметров в виде словаря и добавление своих значений
подскажите как компактно, красиво и корректно передать в функцию параметры, содержащиеся в словаре + добавить свои параметры если над просто передать значения, то проблем нет:
data = < 'v1': 123, 'v3': 3.1415, 'v2': 'abc' >def func(v1, v2, v3): print(v1, v2, v3, sep='\n') func(**data)
а как быть, если я хочу заменить одно значение другим или добавить новое? в JavaScript можно делать так:
а какой-нибудь короткий и красивый аналог в питоне есть?
Отслеживать
задан 18 мая 2023 в 7:16
37.4k 4 4 золотых знака 28 28 серебряных знаков 72 72 бронзовых знака
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Можете просто добавить именованный аргумент перед словарем **kwargs :
kw = def myfunc(**kwargs): print(kwargs) myfunc(**kw) # myfunc(c=3, **kw) # mydict = myfunc(**mydict, **kw) #
для замены значения можно так:
myfunc(**dict(kw, a=100)) #
Отслеживать
ответ дан 18 мая 2023 в 7:37
25.4k 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
да, вариант работает, причем не важно перед или после ставить новый параметр (вроде как проверил — оба варианта прошли), но вот как быть когда надо ЗАМЕНИТЬ параметр? т.е. в словаре уже есть такой параметр, условно **<'a': 1, 'b': 2>, b=2 — получается ошибка got multiple values for keyword argument , поэтому и привел способ из JS — там это происходит автоматически — если был старый параметр СЛЕВА, то он заменится на параметр, который указан СПРАВА, что очень удобно и компактно'a':>