首页 > 解决方案 > 如何将 python 字典转换为可以接受为 **kwargs 的形式?

问题描述

新手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在这种情况下是元组的值,这可能是问题所在?也许要解决这个问题,我应该做两个 dicts;一个用于背景,一个用于文本。但这意味着在我的函数中输入两倍的 **kwargs,我不希望这样做。

提前感谢您的任何答案。

标签: pythondictionarykeyword-argument

解决方案


您可以构建一个新字典,在其中将键转换为字符串

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


推荐阅读