не могу понять, как взаимодействовать со списком в качестве сравнения для оператора if - PullRequest
1 голос
/ 04 марта 2020

Я пытаюсь сделать следующее:

У меня есть список пользователей, которых я хочу удалить из базы данных в переменной "users_to_rm". и я настроил функцию, которая выполняет итерацию по полю usernames пользователя [0] в списке «users_to_rm» и удаляет всех пользователей, кроме пользователя, в «exclude_user»

def remove_users(users_to_rm):
    """ Remove users and associated extensions that are no longer in the database  """
    excluded_user = "supervisor"
    for users in users_to_rm:
        if users[0] == excluded_user:
            pass
        else:
            payloads_user_rm = '{"jsonrpc": "2.0", "method": "deleteUser", "id": "05", "params": {"username":' + '"' + str(users[0]) + '"' +'}}'

            result = requests.request("GET", ucware_cfg.url_admin_user, data=payloads_user_rm, headers=ucware_cfg.headers)
            Reports.log(Reports.LogLevel.INFO, "#########\nUser " + str(extensions[0]) + " removed", send_mail=False)
            log_http_result(result)

Теперь мне бы хотелось, чтобы exclude_user Переменная должна быть списком пользователей, подобным этому:

excid_user = ["supervisor", "testuser", "testuser2"]

Я бы хотел, чтобы моя функция делала то же, что и она. Теперь, но проверьте список пользователей в exclude_user и передайте всех тех, кто в списке.

Надеюсь, что я имел смысл, и спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

вы можете использовать набор для хранения списка excluded_user, поиск по набору - O (1) сложность времени:

def remove_users(users_to_rm):

    """ Remove users and associated extensions that are no longer in the database  """
    excluded_user = {"supervisor","testuser","testuser2"}

    for users in users_to_rm:
        if users[0] not in  excluded_user:
            payloads_user_rm = '{"jsonrpc": "2.0", "method": "deleteUser", "id": "05", "params": {"username":' + '"' + str(users[0]) + '"' +'}}'

            result = requests.request("GET", ucware_cfg.url_admin_user, data=payloads_user_rm, headers=ucware_cfg.headers)
            Reports.log(Reports.LogLevel.INFO, "#########\nUser " + str(extensions[0]) + " removed", send_mail=False)
            log_http_result(result) 
0 голосов
/ 04 марта 2020

Во-первых, не ваша проблема, но вам не нужно pass там. Скорее всего, было бы намного чище просто отменить условие:

if users[0] != excluded_user:
    payloads_user_rm = '{"jsonrpc": "2.0", "method": "deleteUser", "id": "05", "params": {"username":' + '"' + str(users[0]) + '"' +'}}'

    result = requests.request("GET", ucware_cfg.url_admin_user, data=payloads_user_rm, headers=ucware_cfg.headers)
    Reports.log(Reports.LogLevel.INFO, "#########\nUser " + str(extensions[0]) + " removed", send_mail=False)
    log_http_result(result)

Затем можно легко изменить not in вместо !=:

if users[0] not in excluded_user:
    payloads_user_rm = '{"jsonrpc": "2.0", "method": "deleteUser", "id": "05", "params": {"username":' + '"' + str(users[0]) + '"' +'}}'

    result = requests.request("GET", ucware_cfg.url_admin_user, data=payloads_user_rm, headers=ucware_cfg.headers)
    Reports.log(Reports.LogLevel.INFO, "#########\nUser " + str(extensions[0]) + " removed", send_mail=False)
    log_http_result(result)

in проверяет, находится ли то, что слева, внутри коллекции справа, и not in это просто отрицание этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...