разница между двумя списками больше, чем разница в количестве элементов в двух списках - PullRequest
0 голосов
/ 31 октября 2018

У меня есть два списка (A, B) файлов, которые были обработаны. Список A содержит все исходные файлы, список B содержит все файлы, которые были успешно обработаны (поэтому второй список (B) является подмножеством первого).

A содержит 231453 единиц.

B содержит 124769 наименований.

Я хочу вычесть их, чтобы увидеть, какие из этих файлов не получили процесс. (C должен содержать 106684 наименований)

Для этого я использую set :

newlist=[]
newlist2=[]
newlist3=[]
newlist=( set(A) - ( set(A) & set(B) ) )
newlist2=(set(A)^set(B))
newlist3=(set(A) - set(B))
print len(newlist)
print len(newlist2)
print len(newlist3)

Результаты:

134173
161662
134173

Почему предметов больше, чем ожидалось?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Ваш B содержит некоторые элементы, которые не находятся в A, если B является подмножеством A, тогда все три длины должны быть одинаковыми. Тот факт, что ваши симметричные отличия имеют большую длину, ваш B содержит определенные элементы, которые не входят в A

0 голосов
/ 31 октября 2018

Вы указали, что A и B являются списками. Существует вероятность того, что в списке есть дубликаты, которые теряются при преобразовании в набор.

Набор - это неупорядоченная и неиндексированная коллекция. В наборах Python написаны фигурными скобками.

Для вашего случая вы могли бы сделать

not_processed = filter(lambda x: x in A, B)

OR

not_processed = [x for x in A if x in B]

Приведенный выше код объединит все значения x, присутствующие в A, если значение X находится в B

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