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

Как передать словарь в функцию 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): # Тут тоже что-то происходит и возвращается

Если есть более адекватное решение или я упускаю какую-то важную деталь — буду благодарен за любой совет 🙂

  • Вопрос задан более трёх лет назад
  • 518 просмотров

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

Добрый день. Возникла проблема с 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)
  • Вопрос задан более трёх лет назад
  • 180 просмотров

Распаковка аргументов для передачи в функцию Python

Бывают ситуации, когда для функции, требующей отдельных позиционных аргументов, значения этих аргументов уже находятся в списке или кортеже, и для вызова функции должны быть распакованы.

Например, встроенная range() функция ожидает отдельные аргументы start и stop . Если они не доступны отдельно, то можно распаковать аргументы из списка list или кортежа tuple , вызвав функцию с переменной этого списка/кортежа, а впереди нее поставить символ одной звездочки * :

# обычный вызов с отдельными аргументами >>> list(range(3, 6)) # [3, 4, 5] >>> args = [3, 6] # вызов с аргументами, распакованными из списка >>> list(range(*args)) # [3, 4, 5] 

Таким же образом, из словаря dict в функцию можно передать ключевые аргументы, только в этом случае, перед переменной словаря ставится два символов звездочки ** :

>>> def parrot(voltage, state='a stiff', action='voom'): . print("-- This parrot wouldn't", action, end=' ') . print("if you put", voltage, "volts through it.", end=' ') . print("E's", state, "!") . >>> d = "voltage": "four million", "state": "bleedin' demised", "action": "VOOM"> >>> parrot(**d) # -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demis 
  • символом * — распаковывают последовательности в качестве элементов которых одно значение (списки, кортежи, множества)
  • два символа ** — распаковывают последовательности в качестве элементов которых имеется ключ и значение (словари)

Примеры распаковки списков и словарей с аргументами для функции:

date_inf = 'year': "2020", 'month': "12", 'day': "06"> f_name = " - - .txt".format(**date_inf) print(f_name) # 2020-12-06.txt fruits = ['lemon', 'orange', 'banana', 'tomato'] print(*fruits) # lemon orange banana tomato 

Распаковку аргументов можно использовать несколько раз в функции:

date_info = 'year': "2020", 'month': "01", 'day': "01"> track_info = 'artist': "Beethoven", 'title': 'Symphony No 5'> filename = " - - - - .txt".format(**date_info, **track_info) print(filename) # 2020-01-01-Beethoven-Symphony No 5.txt 
fruits = ['lemon', 'orange', 'banana', 'tomato'] first, second, *orher = fruits print(orher) # ['banana', 'tomato'] first, *orher = fruits print(orher) # ['orange', 'banana', 'tomato'] first, *middle, last = fruits print(middle) # ['orange', 'banana'] 
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Функции это объекты
  • Функции могут иметь атрибуты
  • Функции могут храниться в структурах данных
  • Функции могут быть вложенными
  • Передача функции в качестве аргумента другой функции
  • Область видимости переменных функции
  • Операторы global и nonlocal
  • Параметры (аргументы) функции
  • Ключевые аргументы в определении функции Python
  • Значение аргумента по умолчанию в функциях Python
  • Варианты передачи аргументов в функцию Python
  • Переменные аргументов *args и **kwargs в функции Python
  • Распаковка аргументов для передачи в функцию Python
  • Как оцениваются аргументы при вызове функции?
  • Строгие правила передачи аргументов в функцию Python
  • Инструкция return
  • Анонимные функции (lambda-выражения)
  • Строки документации в функциях Python
  • Рекурсия
  • Замыкания в функциях Python
  • Перегрузка функций

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

Наиболее простой способ передать словарь в функцию в Python – это передать его как аргумент:

def my_function(my_dict): print(my_dict) my_dict = 'key1': 'value1', 'key2': 'value2'> my_function(my_dict) # => my_function('key3': 'value3'>) # => 

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

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