如何在Python中循环**kwargs?

Mo *_*abi 24 python kwargs

在下面的代码中,我想阅读obj.subject并将其放入var subject,也读取obj.body并放入body.首先,我想读取kwargs变量并在字符串中搜索要替换的关键字,如果不存在则继续.

我怎样才能kwargs在Python中进行迭代?

for key in kwargs:
    subject = str(obj.subject).replace('[%s]' % upper(key), kwargs[key])

for key in kwargs:
    body = str(obj.body).replace('[%s]' % upper(key), kwargs[key])

return (subject, body, obj.is_html)
Run Code Online (Sandbox Code Playgroud)

jte*_*ace 31

对于Python 3用户:

您可以通过重复kwargs使用.items()

subject = obj.subject
body = obj.body
for key, value in kwargs.items():
    subject = subject.replace('[%s]' % key.toupper(), value)
    body = body.replace('[%s]' % key.toupper(), value)

return (subject, body, obj.is_html)
Run Code Online (Sandbox Code Playgroud)

对于Python 2用户:

您可以通过重复kwargs使用.iteritems():

subject = obj.subject
body = obj.body
for key, value in kwargs.iteritems():
    subject = subject.replace('[%s]' % key.toupper(), value)
    body = body.replace('[%s]' % key.toupper(), value)

return (subject, body, obj.is_html)
Run Code Online (Sandbox Code Playgroud)


oli*_*eal 20

只是快速注意那些升级到Python 3的人.

在Python 3中它几乎是相同的:

subject = obj.subject
body = obj.body
for key, value in kwargs.items():
    subject = subject.replace('[{0}]'.format(key.toupper()), value)
    body = body.replace('[{0}]'.format(key.toupper()), value)

return (subject, body, obj.is_html)
Run Code Online (Sandbox Code Playgroud)

请注意,iteritems()变成items()dict不再有方法iteritems.