Как передать юникод-ключевые слова в ** kwargs - PullRequest
6 голосов
/ 05 января 2011

Я был следующим исключением для работы.

def foo(**kwargs):
    print kwargs
foo(**{'a':'b'})
foo(**{u'a':'b'})

Traceback (последний вызов был последним): Файл "", строка 1, в Ошибка типа: m () ключевые слова должны быть строками

Я делаю что-то не так или мне следует это исправить?

Ответы [ 2 ]

15 голосов
/ 05 января 2011

Обновление до Python 2.6.5 или новее.

5 голосов
/ 26 июля 2012

Обновление не было для меня вариантом, поэтому я призываю это к диктовке по мере необходимости -

def flatten_unicode_keys(d):
    for k in d:
        if isinstance(k, unicode):
            v = d[k]
            del d[k]
            d[str(k)] = v
...