Pass dict с не строковыми ключевыми словами для работы в kwargs

Я работаю с библиотекой, которая имеет функцию с сигнатурой f(*args, **kwargs) . Мне нужно передать python dict в аргументе kwargs, но dict содержит не строки в ключевых словах

 f(**{1: 2, 3: 4}) Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: f() keywords must be strings 

Как я могу обойти это без редактирования функции?

2 Solutions collect form web for “Pass dict с не строковыми ключевыми словами для работы в kwargs”

Нестроковые аргументы ключевых слов просто не разрешены, поэтому общее решение этой проблемы отсутствует. Ваш конкретный пример может быть исправлен путем преобразования ключей вашего dict в строки:

 >>> kwargs = {1: 2, 3: 4} >>> f(**{str(k): v for k, v in kwargs.items()}) 

Я думаю, что лучшее, что вы можете сделать, это отфильтровать нестроковые аргументы в вашем dict:

 kwargs_new = {k:v for k,v in d.items() if isinstance(k,str)} 

Причина в том, что аргументы ключевого слова должны быть строками. В противном случае, что бы они распаковали на другую сторону?

Кроме того, вы можете преобразовать свои нестрочные ключи в строки, но вы рискуете перезаписать ключи:

 kwargs_new = {str(k):v for k,v in d.items()} 

– Подумайте, что произойдет, если вы начнете с:

 d = { '1':1, 1:3 } 
  • почему «any ()» работает медленнее, чем использование циклов?
  • Почему этот код работает только при вводе всех заглавных букв?
  • Как проверить, действительно ли итератор является контейнером итератора?
  • Python 3: UnboundLocalError: локальная переменная, на которую ссылаются перед присваиванием
  • измените некоторые строчные буквы на верхний регистр строки
  • Разделить строку на куски максимальной длины X - разделить только на пробелы
  • Копирование с числовой строкой
  • У Python есть встроенная функция для естественной сортировки строк?
  •  
    Interesting Posts for Van-Lav

    Разделение N мерного массива numpy на несколько 1D массивов

    Как перечислять элементы как группы в QListWidget

    Как импортировать классы django.middleware в проект Google App Engine?

    Запустите команду linux system в качестве суперпользователя, используя скрипт python

    Как правильно объявить структуру ctype + Union в Python?

    Проблема с созданием текстового файла, когда новые строки создаются, когда они не действительно EOL

    Самый быстрый способ построения матрицы с пользовательской архитектурой

    Буферы и объекты Memoryview, объясненные для программиста, отличного от C

    Parse xml с lxml – значение элемента extract

    Python: инструкция exec и непредвиденное поведение сборщика мусора

    Сложность, оживляющая график matplotlib с помощью coppyp

    Как работает объект classmethod?

    Как я могу исправить эту ошибку? Gtk-WARNING **: Ошибка ввода GModule … Ошибка инициализации: версия GLib слишком старая (микросогласование)

    Почему я вижу «TypeError: строковые индексы должны быть целыми»?

    Подождите, пожалуйста, с автоматической перезагрузкой Arduino, используя pySerial

    Python - лучший язык программирования в мире.