如何将字典转换为关键字参数字符串?
我们可以通过 **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())
需要注意的是,字典的顺序是任意的,所以最终生成的字符串可能和你传入的参数顺序不一样。