Unittest, что каждый элемент соответствует в 2 списках - PullRequest
0 голосов
/ 16 апреля 2019

Модульное тестирование, что 2 списка одинаковы в Python. Кажется, что это не удается, если они не в порядке. Мысль о сортировке их сначала или преобразовании в набор. Но метод set не верен, если есть дубликаты и т. Д.

l1 = ['c-00355', 'b-0ae53', 'c-07d32']
l2 = ['b-0ae53', 'c-07d32' ,'c-00355']

l1 == l2
False

set(l1) == set(l2)
True

sorted(l1) == sorted(l2)
True

1 Ответ

1 голос
/ 16 апреля 2019

Возможно, рассмотрим collections.Counter - это своего рода скрещивание между set и сортировкой списка и последующим сравнением ... метод __eq__ проверяет, присутствует ли каждый ключ в обоих и соответствует ли количество, например:

from collections import Counter                                                   

l1 = ['c-00355', 'b-0ae53', 'c-07d32']                                            
l2 = ['b-0ae53', 'c-07d32' ,'c-00355']                                            

Counter(l1) == Counter(l2)                                                        
# True

l2 = ['b-0ae53', 'c-07d32' ,'c-00355', 'c']                                       

Counter(l1) == Counter(l2)                                                        
# False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...