How to pass dictionary items as function arguments in python?
Solution 1
If you want to use them like that, define the function with the variable names as normal:
def my_function(school, standard, city, name):
schoolName = school
cityName = city
standardName = standard
studentName = name
Now you can use **
when you call the function:
data = {'school':'DAV', 'standard': '7', 'name': 'abc', 'city': 'delhi'}
my_function(**data)
and it will work as you want.
P.S. Don't use reserved words such as class
.(e.g., use klass
instead)
Solution 2
*data interprets arguments as tuples, instead you have to pass **data which interprets the arguments as dictionary.
data = {'school':'DAV', 'class': '7', 'name': 'abc', 'city': 'pune'}
def my_function(**data):
schoolname = data['school']
cityname = data['city']
standard = data['class']
studentname = data['name']
You can call the function like this:
my_function(**data)
Solution 3
You can just pass it
def my_function(my_data):
my_data["schoolname"] = "something"
print my_data
or if you really want to
def my_function(**kwargs):
kwargs["schoolname"] = "something"
print kwargs
Related videos on Youtube
Patrick
Updated on February 26, 2020Comments
-
Patrick about 4 years
My code
1st file:
data = {'school':'DAV', 'standard': '7', 'name': 'abc', 'city': 'delhi'} my_function(*data)
2nd file:
my_function(*data): schoolname = school cityname = city standard = standard studentname = name
in the above code, only keys of "data" dictionary were get passed to
my_function()
, but i want key-value pairs to pass. How to correct this ?I want the
my_function()
to get modified like thismy_function(school='DAV', standard='7', name='abc', city='delhi')
and this is my requirement, give answers according to this
EDIT: dictionary key class is changed to standard
-
Torxed about 10 yearsDon't use variable names that are default objects in Python, such as the word
class
. -
pfabri almost 4 years...and this is my requirement, give answers according to this -- Ugh, a bit harsh. But a good question, nonetheless.
-
stason over 3 years@pfabri, it's quite clear from reading the question that English is not user's native language, so it's very possible that the harshness was unintended and that's just how they translated it to English.
-
-
Patrick about 10 yearsi have this line def my_function(*data), modify your code according to this line
-
markcial about 10 yearsyou mean to recompile whole python interpreter to work like you want it to work?
-
Patrick about 10 years@markcial is there any way to implement in code as i like ?
-
markcial about 10 years@Patrick Not a chance, the only way is the one that RemcoGerlih proposed. He has a working sample of code, yours has failed, then is logical to follow their guidelines
-
Patrick about 10 years@RemcoGerlich its giving me error in def my_function(..) line for TypeError: my_function() got an unexpected keyword argument 'school'
-
RemcoGerlich about 10 yearsThen you didn't put 'school' in the arguments of the function.
-
Mayank Choudhary about 7 yearsHello @RemcoGerlich and the rest, is there a way to pass values of only selected keys in a dictionary as parameters to a function?
-
RemcoGerlich about 7 years@MayankChoudhary: either first construct a new dictionary with only the selected keys and pass it with
**
, or just domy_function(mykey1=mydict["mykey1"], ...)
. There is no automatic way to call a function like that. -
Mayank Choudhary about 7 years@RemcoGerlich : Thought so. Was wondering if you had something up your sleeve. :-) Thank you for your reply. I went about creating a new dictionaries.
-
babygame0ver over 6 yearsmade my day :-)
-
Falk Schuetzenmeister about 4 yearsThere is a fundamental difference between the two. The first passes a reference the second copies the data. If you pass a reference and the dictionary gets changed inside the function it will be changed outside the function as well which can cause very bad side effects.