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

发布于 2024-08-31 22:29:09 字数 371 浏览 6 评论 0原文

我们可以使用 **kw 将字典转换为 kw 但如果我想要 kw 作为 str(kw) 则不行str(字典), 因为我想要一个带有 code_generator 关键字参数的字符串,

如果我通过,

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

我想要一个函数返回字符串,例如

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

we can convert the dictionary to kw using **kw but if I want kw as str(kw) not str(dict),
as I want a string with keyword arguments for code_generator,

if I pass

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

I want a function to return the string like

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烙印 2024-09-07 22:29:09

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

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())

请注意,字典是任意排序的,因此结果字符串的顺序可能与传递的参数的顺序不同。

The same syntax is used to accept arbitrary keyword arguments.

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())

Note that dicts are arbitrarily ordered, so the resultant string may be in a different order than the arguments passed.

秋风の叶未落 2024-09-07 22:29:09

上面的答案在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))

The upper answer can not run properly on python 2.7.16, it should be

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))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文