Как мне пройти через ** kwargs в Python? - PullRequest
22 голосов
/ 17 января 2012

В приведенном ниже коде я хочу прочитать 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)

Ответы [ 2 ]

28 голосов
/ 17 января 2012

Для пользователей 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)
20 голосов
/ 25 июля 2014

Просто краткое замечание для тех, кто обновляется до 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.

...