Как преобразовать словарь python в форму, в которой его можно будет принимать как ** kwargs? - PullRequest
0 голосов
/ 28 мая 2020

Newb ie 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 в этом случае являются кортежами, что может быть проблемой? возможно, чтобы обойти это, я должен сделать два изречения; один для bg и один для текста. но это означало бы ввести в мою функцию вдвое больше ** kwargs, а я бы предпочел не делать этого.

Заранее благодарим за любые ответы.

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете создать новый словарь, в котором вы преобразовали ключи в строки

>>> 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 в первую очередь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...