Поиск кортежа в другом списке кортежей не работает с условием «в» - PullRequest
0 голосов
/ 16 января 2020

Не могу понять, почему мое состояние "не в" не работает. У меня есть два списка (all_cameras и some_cameras). Один содержит элементы типа «Row» (извлекается из базы данных с помощью: all_cameras = cursor.fetchall ()), другой содержит элементы типа «tuple».

В настоящее время списки идентичны, поэтому первые элементы должны идеально подходят друг другу; однако, когда я делаю тест, чтобы увидеть, находится ли элемент из «some_cameras» где-нибудь в списке «all_cameras», он всегда говорит, что не был найден. Разве я не могу использовать условия «в / не в» для этого типа вещей?

for v_c in some_cameras:
   logging.info("Checking if this item is in the all_cameras tuple:")
   logging.info(v_c)
   logging.info("{} is the first element in the all_cameras list".format(all_cameras[0]))
   if v_c not in all_cameras:
        logging.info("{} was not found in the all_cameras tuple".format(v_c))

Выход журнала:

[2020-01-16 12:40:53,588] INFO - MainThread - root - Checking if this item is in the all_cameras tuple:
[2020-01-16 12:40:53,591] INFO - MainThread - root - ('computer', 'cam', '192.168.0.1', 1, '00000000-0000-0000-0000-accc8e741751')
[2020-01-16 12:40:53,603] INFO - MainThread - root - ('computer', 'cam', '192.168.0.1', 1, '00000000-0000-0000-0000-accc8e741751') is the first element in the all_cameras list
[2020-01-16 12:40:53,605] INFO - MainThread - root - ('computer', 'cam', '192.168.0.1', 1, '00000000-0000-0000-0000-accc8e741751') was not found in the all_cameras tuple

1 Ответ

0 голосов
/ 16 января 2020

Похоже, вы не можете делать то, что я пытался сделать, потому что сравнивались «строка» и «кортеж». Я обновил свой код, чтобы сделать каждый список списками, и теперь он работает как положено. Код, который я использовал для преобразования вывода SQL, был:

all_cameras = cursor.fetchall()  # list of Rows
all_cameras = [list(item) for item in all_cameras]  # list of Lists
...