[英]Passing a dictionary to as keyword parameters to a function
我有一個計算銷售額的函數:
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)
我還有一本名為sales_test
的字典:
sales_test = {'sale_1': 100,
'sale_2': 75,
'sale_3': 92,
'revenue_1' : 400,
'revenue_2' : 219,
'city' : 'London'
}
我希望能夠創建另一個名為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)
期望的輸出是: 253.64999999999998
(即100+75+92)
但是,我收到以下錯誤消息:
----> 6 sales = get_sales(**sales_test)
7 return sales
TypeError: get_sales() got an unexpected keyword argument 'revenue_1'
任何解包sales_test
字典的幫助將不勝感激。 謝謝!
您正在嘗試傳遞函數無法接受的附加參數。 解決此問題的一種方法是:
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.