这里是新手python程序员,因此,如果有人提出这个问题,我深表歉意,但是我找不到我理解的答案,并且可以将其应用于我的代码。
基本上我有一个my_dict
的字典len(x)
,其中4 < x < 100
。
字典的形式:
{ 0: (bg_colour, text_colour), ..., x: (bg_colour, text_colour)) }
bg_colour
和text_colour
的值将在程序运行时更新。
稍后在我的代码中,我想调用一个函数基于此字典在画布上绘制矩形,并且我打算使用**kwargs
作为实现此目的的参数。我试过使用:func(**mydict)
,但获得error: keywords must be strings
。
所以我的问题是如何将my_dict
转换为**kwargs
可以识别的形式?根据我的阅读,我必须将其转换为字符串形式,例如:my_dict = '0=(bg_colour, text_colour), ..., x=(bg_colour, text_colour)'
我在想也许是因为在这种情况下my_dict
的值是元组,这可能是问题所在吗?也许要解决此问题,我应该做出两个决定;一个用于背景,另一个用于文本。但这意味着在我的函数中输入两倍多的** kwarg,而我不希望这样做。
预先感谢您的回答。
您可以建立新的字典,将键转换为字符串
>>> def func(**mydict):
... print(mydict)
...
>>> my_dict = {0:(30,12),1:(99,99), 2:(16,255)}
>>> func(**{str(key):val for key,val in my_dict.items()})
{'0': (30, 12), '1': (99, 99), '2': (16, 255)}
>>>
但是为什么不只定义func
接受dict
?如果该函数使用关键字参数,则它很好地押注它不期望整数作为参数,并且如果该kw dict不包含参数,那么我认为它首先不应该是kw dict。