Python 如何将unicode关键字传递给**kwargs

Python 如何将unicode关键字传递给**kwargs,python,unicode,keyword-argument,Python,Unicode,Keyword Argument,我是例外的以下工作 def foo(**kwargs): print kwargs foo(**{'a':'b'}) foo(**{u'a':'b'}) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:m()关键字必须是字符串 我是做错了还是应该修复它?升级到Python 2.6.5或更高版本。升级不是我的选择,所以我会根据需要在dicts上调用它-- **后面的foo()参数必须是映射,而不是设置。我想你的意思是a:“b”。你的平台是什么?python-2.

我是例外的以下工作

def foo(**kwargs):
    print kwargs
foo(**{'a':'b'})
foo(**{u'a':'b'})
回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:m()关键字必须是字符串


我是做错了还是应该修复它?

升级到Python 2.6.5或更高版本。

升级不是我的选择,所以我会根据需要在dicts上调用它--


**后面的
foo()参数必须是映射,而不是设置
。我想你的意思是a:“b”。你的平台是什么?python-2.7-8.fc14.1.x86_64可以很好地使用该修复程序。这在Python2.7.1I中运行得很好,我修复了问题中的错误。但问题仍然存在,我运行的是2.6,它崩溃了。您运行的是2.6.1(版本67515),版本68805修复了问题2646。所以,再一次:将Python2.6更新为最新版本(从今天起为2.6.6)。是的。这是固定的2.6。更多信息:@mipadi假设示例应该是dicts而不是set文本,似乎相当安全,因为给出的异常仅在这种情况下才有意义。例外情况只会发生在2.6之前。我正在运行2.6(Python2.6.1(r261:675152010年6月24日,21:47:49))我不愿意投票表决答案。它至少应该整合@WillMcCutchen的评论。我认为这样一个简单的解决方法比公认的答案更有价值。
def flatten_unicode_keys(d):
    for k in d:
        if isinstance(k, unicode):
            v = d[k]
            del d[k]
            d[str(k)] = v