Как передать несколько значений списка в качестве параметров функции? - PullRequest
2 голосов
/ 21 апреля 2020

Может ли кто-нибудь помочь мне понять, как я могу передавать значения из нескольких списков в качестве параметров функции? Я пытаюсь обновить электронную почту для каждого myemailId с помощью URL, который включает customerId.

мой код:

emailId = [732853380,7331635674]
customerId = ['cust-12345-mer','cust-6789-mer']

for x, y in zip(emailId, customerId):
    def update_email(emailId, token, user, notes="https://myurl.com/customer?customerId =" + customerId):
        headers = {     'accept': 'application/json',
                    'Content-Type': 'application/json',
                    'token': token,
                    'user': user}
        endpoint = 'email/'
        body = {'emailId': emailId, 'user': user, 'notes': notes}
        requests.put(url = host + endpoint, headers = headers, json=body)
        return True

, но получаю эту ошибку, соответствующую строке, начинающейся с def update_email ...:

TypeError: must be str, not list

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 21 апреля 2020

Прежде всего, вы не должны определять функцию для каждой итерации l oop, а один раз перед выполнением l oop.

Чтобы передать значения, используйте:

emailId = [732853380, 7331635674]
customerId = ['cust-12345-mer', 'cust-6789-mer']


def update_email(emailId, token, user, customerId):
    notes = "https://myurl.com/customer?customerId =" + customerId
    headers = {'accept': 'application/json',
               'Content-Type': 'application/json',
               'token': token,
               'user': user}
    endpoint = 'email/'
    body = {'emailId': emailId, 'user': user, 'notes': notes}
    requests.put(url=host + endpoint, headers=headers, json=body)
    return True


for x, y in zip(emailId, customerId):
    update_email(x, token, user, y)

2 голосов
/ 21 апреля 2020

customerId - это список, y - это значение из этого списка. Используйте

notes="https://myurl.com/customer?customerId =" + y
...