繁体   English   中英

如何在 Python 中循环遍历 **kwargs?

[英]How do I loop through **kwargs in Python?

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

如何在 Python 中遍历kwargs

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)

对于 Python 3 用户:

您可以使用.items()遍历kwargs

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)

对于 Python 2 用户:

您可以使用.iteritems()遍历kwargs

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)

对于那些升级到 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)

请注意, iteritems()变为items()因为dict不再具有iteritems方法。

您可以对字典进行迭代,因为它默认提供对其键的迭代

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

print(subject, body)

我在Python 3Python 2解释器上测试了它,它对我来说完全正常,所以它也适合你。 所有结构都有一个默认值,无论是列表、字典还是元组,您都可以在 python 语言中轻松对其进行迭代。

附上一张照片,说明我们可以如此轻松地做到这一点 照片证明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM