使用字典更改变量的参数

问题描述 投票:1回答:1

我正在尝试使用字典来更改插入函数参数的值。

horizon = 'YEARS'

Dict1 = {'YEARS':'weeks = 52*x','WEEKS':'weeks = x','DAYS':'days = x','HOURS': 'hours = x'} 

dummy = pd.to_datetime(pd.datetime.now())

dummy2 = [dummy - timedelta(weeks=x) for x in range(1,5)]

dummy3 = [dummy - timedelta((Dict1[horizon])) for x in range(1,5)]

在这种情况下,dummy2变量有效但dummy3变量不会像Dict1[horizon][0]那样给出一个字符串。

我可以用其他方式实现吗?

python dictionary timedelta
1个回答
0
投票

是的,您可以使用字典解包和lambda函数。

Dict1 = {'YEARS': lambda a: {'weeks': 52 * a}, ...

... timedelta(**Dict1[horizon](x)) ... 

这是如何运作的?

好吧,首先Dict1['YEARS']正在返回一个函数:lambda a: {'weeks': 52 * a}。例如,当使用2调用时,将返回一个元素字典:{'周':104}。然后,当传递给函数时,双星(**)将其解包,将timedelta(**{'weeks': 104})转换为timedelta(weeks=104)。正如我们想要的那样。

© www.soinside.com 2019 - 2024. All rights reserved.