Ошибка сравнения списка в python3, и вот пример кода - PullRequest
0 голосов
/ 23 марта 2020

Вот что у меня есть:

ListA = ['000C297D-3667-0ed3-0000-038654705872', '000C297D-3667-0ed3-0000-038654705685']
ListB = ['000C297D-3667-0ed3-0000-038654705685','000C297D-3667-0ed3-0000-038654705872', few more such entries]

Цель состоит в том, чтобы проверить соответствующие элементы. Тем не менее, мне не повезло, результат сравнения соответствий, даже когда я использовал следующие методы:

  1. Назначить ListA, ListB как setA и setB соответственно, а затем выполнить операцию пересечения, он не находит никаких Оператор match.

  2. == с помощью итерации по списку также не генерирует совпадение.

  3. Оператор "IN" тоже не указывает на match.

интересно, когда операция объединения выполняется на наборе для этого, он повторяет записи.

Любые указатели на этом

коде :

for key, value in networkGroup.items():
    print (key,value)
    setA = set(value['ReferenceId'])
    print (setA)
    for k, v in IDIPMap.items():
        print (k,v)
        if (set(k).intersection(setA)):
            print ("Match")

Вывод:

Group-Test {'Group Type': 'NetworkObject', 'Id': '000c297d-3667-0ed3-0000-133143995685', 'Name': 'Group-Test', 'ReferenceId': ['000C297D-3667-0ed3-0000-038654705872', '000C297D-3667-0ed3-0000-038654705685'], 'Type': 'NetworkObject'}

{'000C297D-3667-0ed3-0000-038654705685', '000C297D-3667-0ed3-0000-038654705872'}

000c297d-3667-0ed3-0000-038654705872 ['10.106.38.222']
000c297d-3667-0ed3-0000-038654705685 ['10.106.38.221']

в идеале сравнение переменной k должно совпадать с setA

Новый модифицированный код:

for key,value in networkGroup.items():
    #print (value['ReferenceId'])
    setA = set()
    setA = set(value['ReferenceId'])
    print (setA)
    for k, v in networkID.items():
        print (v['Id'])
        if (v['Id'] in setA):
            print ("Match")
        if (v['Id'] in value['ReferenceId']):
            print ("Match")

Вывод:

{'000C297D-3667-0ed3-0000-038654705685', '000C297D-3667-0ed3-0000-038654705872'} 000c297d-3667-0ed3-0000-038654705872 000c297d-3667-0ed3-0000 -038654705685

Просто не похоже ни одно из сравнений. Я думаю, что я мог бы сделать здесь грубую ошибку.

Ответы [ 2 ]

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

set.intersect обрабатывает прописные / строчные буквы как разные вещи.

Вы можете использовать:

setA={s.lower() for s in setA}
setB={s.lower() for s in setB}

Перед пересечением для решения проблемы.

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

Кажется, ответ был в деталях. UUID были чувствительны к регистру и, следовательно, проблема решала их, используя верхнюю и нижнюю функции.

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