38

在下面的代码中,我想读取obj.subject并将其放入 varsubject,也读取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)
4

3 回答 3

49

对于 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)

对于 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)
于 2012-01-17T18:04:23.940 回答
21

对于那些升级到 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()asdict不再有方法iteritems

于 2014-07-25T03:05:45.530 回答
1

您可以在字典上进行迭代,因为它在其键上默认提供迭代。

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 语言中轻松地对其进行迭代。

附上一张照片,说明我们可以很容易地做到这一点照片为证

于 2021-02-18T11:33:14.833 回答