Как узнать разницу между двумя значениями в списке - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь получить разницу между temp1 и temp2, которая будет 10.25.60.156 и 10.22.17.180 . Поскольку данные в temp2 заключены в квадратные скобки, я получаю эту ошибку:

z = set(temp1).symmetric_difference(set(temp2))
TypeError: unhashable type: 'list'

. Как я могу получить разницу между этими двумя, если в одном есть скобка? Заранее спасибо!

temp1 = ['10.25.39.70', '10.25.16.160', '10.25.60.156']
temp2 = [['10.25.16.160'], ['10.22.17.180'], ['10.25.39.70']]

z = set(temp1).symmetric_difference(set(temp2))
print(z)

Ответы [ 3 ]

2 голосов
/ 19 июня 2020
temp1 = ['10.25.39.70', '10.25.16.160', '10.25.60.156']
temp2 = [['10.25.16.160'], ['10.22.17.180'], ['10.25.39.70']]

print( set(temp1).symmetric_difference(v[0] for v in temp2) )

Печать:

{'10.22.17.180', '10.25.60.156'}
0 голосов
/ 19 июня 2020

Пожалуйста, проверьте, сработает ли это для вас:

temp1 = ['10.25.39.70', '10.25.16.160', '10.25.60.156']
temp2 = [['10.25.16.160'], ['10.22.17.180'], ['10.25.39.70']]

temp2= [item for sublist in temp2 for item in sublist]
print(set(temp1).symmetric_difference(temp2))

Ответ: {'10 .22.17.180 ', '10 .25.60.156'}

0 голосов
/ 19 июня 2020

Почему элементы temp2 должны быть списками? Если они это сделают, вы можете использовать понимание списка, чтобы выбрать 0-й элемент temp2 при сравнении:

temp1 = ['10.25.39.70', '10.25.16.160', '10.25.60.156']
temp2 = [['10.25.16.160'], ['10.22.17.180'], ['10.25.39.70']]

z = set(temp1).symmetric_difference(set([x[0] for x in temp2))
print(z)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...