[英]Passing a dictionary to as keyword parameters to a function
I have a function to compute sales:我有一个计算销售额的函数:
def get_sales(
sale_1: int,
sale_2: int,
sale_3: int,
with_fees: bool = True,
) -> float:
if with_fees is True:
return (sale_1 + sale_2 + sale_3) * 0.95
else:
return (sale_1 + sale_2 + sale_3)
I also have a dictionary named sales_test
:我还有一本名为
sales_test
的字典:
sales_test = {'sale_1': 100,
'sale_2': 75,
'sale_3': 92,
'revenue_1' : 400,
'revenue_2' : 219,
'city' : 'London'
}
I'd like to be able to create another function named advanced_sales
that takes in the sales_test
dict and returns the get_sales
output:我希望能够创建另一个名为
advanced_sales
的函数,该函数接受sales_test
字典并返回get_sales
输出:
def advanced_sales(
sales_test: Dict[str, int],
with_fees: bool = True,
) -> float:
sales = get_sales(**sales_test)
return sales
advanced_sales(sales_test)
The desired output is: 253.64999999999998
(ie 100+75+92)期望的输出是:
253.64999999999998
(即100+75+92)
However, I'm getting the following error message:但是,我收到以下错误消息:
----> 6 sales = get_sales(**sales_test)
7 return sales
TypeError: get_sales() got an unexpected keyword argument 'revenue_1'
Any assistance unpacking the sales_test
dictionary would be greatly appreciated.任何解包
sales_test
字典的帮助将不胜感激。 Thanks!谢谢!
You are trying to pass additional argument which the function cannot accept.您正在尝试传递函数无法接受的附加参数。 One way to address this would be:
解决此问题的一种方法是:
import numpy as np
import pandas as pd
sales_test = {'sale_1': 100,
'sale_2': 75,
'sale_3': 92,
'revenue_1' : 400,
'revenue_2' : 219,
'city' : 'London'
}
def get_sales(
with_fees: bool = True,**kwargs,
) -> float:
sale_1,sale_2,sale_3=kwargs['sale_1'],kwargs['sale_2'],kwargs['sale_3']
if with_fees is True:
return (sale_1 + sale_2 + sale_3) * 0.95
else:
return (sale_1 + sale_2 + sale_3)
def advanced_sales(
sales_test=None,
with_fees: bool = True,
) -> float:
sales = get_sales(**sales_test,with_fees=with_fees)
return sales
print(advanced_sales(sales_test))
get_sales 仅接受 4 个参数,但您传递的参数太多,并且其中没有一个被命名为 income_1 等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.