如何将python字典转换为可以被接受为** kwargs的形式?

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

这里是新手python程序员,因此,如果有人提出这个问题,我深表歉意,但是我找不到我理解的答案,并且可以将其应用于我的代码。

基本上我有一个my_dict的字典len(x),其中4 < x < 100

字典的形式:

{ 0: (bg_colour, text_colour), ..., x: (bg_colour, text_colour)) }

bg_colourtext_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,而我不希望这样做。

预先感谢您的回答。

python dictionary kwargs
1个回答
0
投票

您可以建立新的字典,将键转换为字符串

>>> 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。

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