如何在python中将字典项作为函数参数传递? [复制]
Posted
技术标签:
【中文标题】如何在python中将字典项作为函数参数传递? [复制]【英文标题】:How to pass dictionary items as function arguments in python? [duplicate] 【发布时间】:2014-03-26 00:33:17 【问题描述】:我的代码
第一个文件:
data = 'school':'DAV', 'standard': '7', 'name': 'abc', 'city': 'delhi'
my_function(*data)
第二个文件:
my_function(*data):
schoolname = school
cityname = city
standard = standard
studentname = name
在上面的代码中,只有“数据”字典的键被传递给my_function()
,但我希望键值对传递。如何纠正这个问题?
我希望my_function()
像这样修改
my_function(school='DAV', standard='7', name='abc', city='delhi')
这是我的要求,根据这个给出答案
EDIT: 字典键class 改为standard
【问题讨论】:
不要使用 Python 中默认对象的变量名,例如单词class
。
...这是我的要求,按照这个给出答案 -- 呃,有点苛刻。不过,这是个好问题。
@pfabri,从阅读问题中可以清楚地看出英语不是用户的母语,因此很可能是无意的,这就是他们将其翻译成英语的方式。
【参考方案1】:
如果您想这样使用它们,请照常使用变量名定义函数:
def my_function(school, standard, city, name):
schoolName = school
cityName = city
standardName = standard
studentName = name
现在您可以在调用函数时使用**
:
data = 'school':'DAV', 'standard': '7', 'name': 'abc', 'city': 'delhi'
my_function(**data)
它会按你的意愿工作。
P.S.不要使用class
等保留字。(例如,改用klass
)
【讨论】:
我有这行 def my_function(*data),根据这行修改你的代码 你的意思是重新编译整个 python 解释器,让它像你想要的那样工作? @markcial 有什么方法可以按照我的喜好在代码中实现吗? @Patrick 不是机会,唯一的方法是 RemcoGerlih 提出的方法。他有一个有效的代码示例,你的失败了,那么遵循他们的指导方针是合乎逻辑的 @MayankChoudhary:要么先用选定的键构造一个新字典,然后用**
传递它,要么只用my_function(mykey1=mydict["mykey1"], ...)
。没有自动方式来调用这样的函数。【参考方案2】:
*data 将参数解释为元组,而您必须传递 **data 将参数解释为字典。
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']
你可以这样调用函数:
my_function(**data)
【讨论】:
【参考方案3】:你可以通过它
def my_function(my_data):
my_data["schoolname"] = "something"
print my_data
或者如果你真的想要
def my_function(**kwargs):
kwargs["schoolname"] = "something"
print kwargs
【讨论】:
让我开心:-) 两者有本质的区别。第一个传递引用,第二个复制数据。如果你传递了一个引用并且字典在函数内部发生了变化,它也会在函数外部发生变化,这可能会导致非常糟糕的副作用。以上是关于如何在python中将字典项作为函数参数传递? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
没有指针,我可以在 Python 中将引用作为参数传递吗? [复制]
如何在 FastAPI 中将字典列表作为 Body 参数发送?