如何将字典转换为关键字参数字符串?

8 投票
2 回答
8727 浏览
提问于 2025-04-15 22:32

我们可以通过 **kw 把字典转换成 kw,但是如果我想要的是 kw 的字符串形式,也就是 str(kw),而不是 str(dict),因为我需要一个包含关键字参数的字符串来给代码生成器使用。

如果我传入

obj.method(name='name', test='test', relation = [('id','=',1)])

我希望这个函数返回的字符串像这样

"name='name', test='test', relation = [('id','=',1)]"

2 个回答

1

上面的答案在 Python 2.7.16 版本上无法正常运行,应该是这样:

def somestring(**kwargs):
    return ''.join([('%s=%s' % x) for x in kwargs.iteritems()]) 


#A full example:

def RunCommandAndEnsureZero(*args, **kwargs):
    retCode = RunCommand(*args, **kwargs)
    if retCode != 0:
        kwargsString = ''.join([('%s=%s' % x) for x in kwargs.iteritems()])
        raise Exception("error command: \"%s %s\"" % (''.join(args), kwargsString))
14

相同的语法可以用来接受任意的关键字参数。

Python 2:

def somestring(**kwargs):
  return ', '.join('%s=%r' % x for x in kwargs.iteritems())

Python 3:

def somestring(**kwargs):
    return ", ".join(f"{key}={value}" for key, value in kwargs.items())

需要注意的是,字典的顺序是任意的,所以最终生成的字符串可能和你传入的参数顺序不一样。

撰写回答