Tôi có hai danh sách kết quả kiểm tra. Các kết quả xét nghiệm được biểu diễn dưới dạng từ điển:So sánh danh sách từ điển
list1 = [{testclass='classname', testname='testname', testtime='...},...]
list2 = [{testclass='classname', testname='testname', ...},...]
Các đại diện từ điển là hơi khác nhau trong cả hai danh sách, bởi vì đối với một danh sách tôi có một số chi tiết thông tin. Nhưng trong mọi trường hợp, mọi từ điển thử nghiệm trong một danh sách sẽ có một phần tử tên lớp và testname cùng nhau tạo thành một cách xác định duy nhất thử nghiệm và cách so sánh nó trong danh sách.
Tôi cần phải tìm ra tất cả các thử nghiệm có trong danh sách1 nhưng không có trong danh sách 2, vì chúng đại diện cho các lỗi kiểm tra mới.
Để thực hiện điều này, tôi làm:
def get_new_failures(list1, list2):
new_failures = []
for test1 in list1:
for test2 in list2:
if test1['classname'] == test2['classname'] and \
test1['testname'] == test2['testname']:
break; # Not new breakout of inner loop
# Doesn't match anything must be new
new_failures.append(test1);
return new_failures;
tôi tự hỏi là một con trăn cách hơn để làm điều này. Tôi nhìn vào bộ lọc. Chức năng bộ lọc sử dụng sẽ cần phải có được một xử lý cho cả hai danh sách. Một là dễ dàng, nhưng tôi không chắc chắn làm thế nào nó sẽ có được một xử lý cho cả hai. Tôi biết nội dung của danh sách cho đến khi thời gian chạy.
Bất kỳ trợ giúp nào sẽ được đánh giá cao,
Cảm ơn.
lỗi chính tả @Wooble cố định – dublintech