如何在Python中遍历**kwargs?
在下面的代码中,我想读取 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 3和Python 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)