带连字符的python关键字参数

时间:2014-06-09 13:23:46

标签: python arguments keyword hyphen

我有一个关键字参数函数:

def f1(**kw):
    for key,val in kw.iteritems():
        print "key=%s val=%s" % (key,val)

f1(Attr1 = "Val1", Attr2 = "Val2")  # works fine.

f1(Attr1-SubAttr = "Val1", Attr2 = "Val2")  # complains about keyword being an expression.

f1("Attr1-SubAttr" = "Val1", Attr2 = "Val2")  # doesn't work either.

如何使用连字符传递关键字?我无法控制这些关键字,因为我正在从现有的旧数据库中解析这些关键字。

谢谢! -kumar

2 个答案:

答案 0 :(得分:21)

关键字参数必须valid Python identifiers;这些不允许-,因为它是为减法保留的。

您可以使用**kwargs variable keyword argument syntax代替传递任意字符串:

f1(**{"Attr1-SubAttr": "Val1", "Attr2": "Val2"})

答案 1 :(得分:0)

要使上述代码在由iteritems()代替的python 3 items()中工作。