如何在Python中遍历**kwargs?

45 投票
3 回答
50407 浏览
提问于 2025-04-17 10:27

在下面的代码中,我想读取 obj.subject 的内容,并把它放到变量 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)

3 个回答

2

你可以直接遍历字典,因为它默认是可以通过键来进行迭代的。

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语言都提供了默认的方式让你轻松遍历这些结构。

这里附上一张图片,展示我们是多么简单地做到这一点的。 证明的照片

22

给那些准备升级到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 这个方法了。

59

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

撰写回答