Перейти к содержимому

Как передать словарь в функцию python

  • автор:

Как передать параметры в виде словаря в функцию?

Суть: Нужна возможость использовать функцию как самостоятельно (просто передать в нее параметры), так и внутри большой функции (передать в большую функцию список словарей, чтобы рабочая функция «съела» ключи как параметры).

Вопрос: Есть ли возможность передать в функцию список словарей, чтобы она нашла соответствия своих параметров в ключах словаря? Или же, обработать словарь перед подачей в функцию, чтобы он передался не в формате «ключ:значение», а формате «ключ=значение»?

Пример кода:

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 — там это происходит автоматически — если был старый параметр СЛЕВА, то он заменится на параметр, который указан СПРАВА, что очень удобно и компактно

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *