python - 如何将 python 字典转换为可以接受为 **kwargs 的形式?
问题描述
新手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
在这种情况下是元组的值,这可能是问题所在?也许要解决这个问题,我应该做两个 dicts;一个用于背景,一个用于文本。但这意味着在我的函数中输入两倍的 **kwargs,我不希望这样做。
提前感谢您的任何答案。
解决方案
您可以构建一个新字典,在其中将键转换为字符串
>>> 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。