So sánh hai danh sách từ điển trong python

Danh sách trong python là tập hợp các mục tương tự. Đôi khi, chúng tôi có thể cần so sánh các mục dữ liệu trong hai danh sách để thực hiện một số thao tác nhất định. Chúng tôi sẽ thảo luận về một số phương pháp để so sánh hai danh sách trong python

Sử dụng danh sách. toán tử sort[] và ==

Danh sách. Phương thức sort[] sắp xếp hai danh sách và toán tử == so sánh hai danh sách theo từng mục, nghĩa là chúng có các mục dữ liệu bằng nhau ở các vị trí bằng nhau. Điều này kiểm tra xem danh sách có chứa các giá trị mục dữ liệu bằng nhau hay không nhưng nó không tính đến thứ tự của các phần tử trong danh sách. Điều này có nghĩa là danh sách [1,2,3] sẽ bằng danh sách [2,1,3] theo phương pháp so sánh này

Ví dụ

Bản thử trực tiếp

def compareList[l1,l2]:
   l1.sort[]
   l2.sort[]
   if[l1==l2]:
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print["First comparison",compareList[l1,l2]]
l3=[1,2,3]
l4=[1,2,4]
print["Second comparison",compareList[l3,l4]]

đầu ra

First comparison Equal
Second comparison Non equal

Sử dụng bộ sưu tập. Phản đối[]

Phương pháp này kiểm tra sự bằng nhau của các danh sách bằng cách so sánh tần suất của từng phần tử trong danh sách đầu tiên với danh sách thứ hai. Phương pháp này cũng không tính đến thứ tự của các phần tử của danh sách

Ví dụ

Bản thử trực tiếp

import collections
def compareList[l1,l2]:
   if[collections.Counter[l1]==collections.Counter[l2]]:
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print["First comparison",compareList[l1,l2]]
l3=[1,2,3]
l4=[1,2,4]
print["Second comparison",compareList[l3,l4]]

đầu ra

First comparison Non equal
Second comparison Equal

Sử dụng tổng [], zip [] và len []

Phương pháp này trước tiên so sánh từng phần tử của hai danh sách và lưu trữ chúng dưới dạng tổng của 1, sau đó được so sánh với độ dài của danh sách khác. Đối với phương pháp này, trước tiên chúng ta phải kiểm tra xem độ dài của cả hai danh sách có bằng nhau hay không trước khi thực hiện phép tính này

Phương pháp này cũng kiểm tra thứ tự của các phần tử. Điều này có nghĩa là danh sách [1,2,3] không bằng danh sách [2,1,3]

Ví dụ

Bản thử trực tiếp

def compareList[l1,l2]:
   if[len[l1]==len[l2] and len[l1]==sum[[1 for i,j in zip[l1,l2] if i==j]]]:
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print["First comparison",compareList[l1,l2]]
l3=[1,2,3]
l4=[1,2,3]
print["Second comparison",compareList[l3,l4]]

đầu ra

First comparison Non equal
Second comparison Equal

Như trong ví dụ trên, đối với phép so sánh đầu tiên, các mục dữ liệu trong cả hai danh sách đều bằng nhau nhưng thứ tự của các phần tử khác nhau. Do đó, so sánh đầu tiên trả về không bằng

Sử dụng toán tử ==

Đây là một sửa đổi của phương pháp đầu tiên. Trong phương pháp này, các danh sách được so sánh mà không cần sắp xếp và do đó, phương pháp này tính đến thứ tự của các mục dữ liệu trong danh sách

Ví dụ

Bản thử trực tiếp

def compareList[l1,l2]:
   if[l1==l2]:
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print["First comparison",compareList[l1,l2]]
l3=[1,2,3]
l4=[1,2,3]
print["Second comparison",compareList[l3,l4]]

đầu ra

First comparison Non equal
Second comparison Equal

Đây là một số phương pháp so sánh danh sách trong python, cả hai đều tính đến thứ tự của các mục dữ liệu cũng như không tính đến thứ tự của các mục dữ liệu

Không rõ tại sao chức năng này làm những gì nó làm. Tài liệu [nhận xét/tài liệu] về lý do tại sao chức năng này được triển khai theo cách này sẽ giúp

def display_data[data: list] -> None:
    for i in data:
        print["===", i, "===", sep="\n"]
5 không bao giờ được sử dụng, hãy xóa nó đi

Ở trạng thái hiện tại, chức năng có thể dễ dàng được cắt xuống một dòng bằng cách hiểu danh sách

def change_data[items: list[dict]] -> list[dict]:
    return [{'Name': item['Name'], 'Status': randrange[2]} for item in items]

Nếu bạn không quen với cách hiểu danh sách và biểu thức trình tạo, tôi khuyên bạn nên tìm hiểu về chúng. Chúng là một công cụ hữu ích [và thường rất hiệu quả]

Nhưng hãy cẩn thận rằng một lớp lót không phải lúc nào cũng là lựa chọn tốt nhất. Nếu việc tạo từ điển trở nên phức tạp hơn, có lẽ tốt hơn là chuyển nó sang chức năng riêng của nó

Cũng lưu ý rằng

def display_data[data: list] -> None:
    for i in data:
        print["===", i, "===", sep="\n"]
6 không cần nhiều dấu ngoặc đơn.
def display_data[data: list] -> None:
    for i in data:
        print["===", i, "===", sep="\n"]
7

def display_data[data: list] -> None:
    for i in data:
        print["===", i, "===", sep="\n"]
8

Tôi khuyên bạn nên cắt phần này xuống còn một câu lệnh

def display_data[data: list] -> None:
    for i in data:
        print["===", i, "===", sep="\n"]
9 duy nhất cho mỗi lần lặp vòng lặp

________số 8

hoặc thậm chí tốt hơn

First comparison Equal
Second comparison Non equal
5

First comparison Equal
Second comparison Non equal
50

Lần khởi tạo đầu tiên của bạn đối với

First comparison Equal
Second comparison Non equal
51 ngay lập tức được ghi đè bên trong vòng lặp, hãy xóa nó

First comparison Equal
Second comparison Non equal
52, không cần dấu ngoặc đơn.
First comparison Equal
Second comparison Non equal
53

Có nhiều cách tốt hơn [dễ đọc hơn và hiệu quả hơn] để tạo

First comparison Equal
Second comparison Non equal
54, nên được gọi là
First comparison Equal
Second comparison Non equal
55 hoặc
First comparison Equal
Second comparison Non equal
56

  • hiểu danh sách.
    First comparison Equal
    Second comparison Non equal
    57
  • cách tiếp cận chức năng.
    First comparison Equal
    Second comparison Non equal
    58

Điều này cũng cho phép bạn loại bỏ cả hai nhiệm vụ

First comparison Equal
Second comparison Non equal
59, vì những cách tiếp cận này sẽ tạo ra một danh sách trống nếu không có mục mới

Bạn có thể thay thế

import collections
def compareList[l1,l2]:
   if[collections.Counter[l1]==collections.Counter[l2]]:
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print["First comparison",compareList[l1,l2]]
l3=[1,2,3]
l4=[1,2,4]
print["Second comparison",compareList[l3,l4]]
60 bằng
import collections
def compareList[l1,l2]:
   if[collections.Counter[l1]==collections.Counter[l2]]:
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print["First comparison",compareList[l1,l2]]
l3=[1,2,3]
l4=[1,2,4]
print["Second comparison",compareList[l3,l4]]
61. Tìm hiểu thêm về giá trị thật và giả trong Python

Hoàn thành mã

import collections
def compareList[l1,l2]:
   if[collections.Counter[l1]==collections.Counter[l2]]:
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print["First comparison",compareList[l1,l2]]
l3=[1,2,3]
l4=[1,2,4]
print["Second comparison",compareList[l3,l4]]
6

Tiếp cận

Xin lưu ý rằng thuật toán hiện tại chạy trong O[n^2]. Thật không may,

First comparison Non equal
Second comparison Equal
0 là một loại không thể xóa được trong Python. Do đó, chúng tôi không thể sử dụng
import collections
def compareList[l1,l2]:
   if[collections.Counter[l1]==collections.Counter[l2]]:
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print["First comparison",compareList[l1,l2]]
l3=[1,2,3]
l4=[1,2,4]
print["Second comparison",compareList[l3,l4]]
63 để giải quyết vấn đề này, nó sẽ chạy trong O[n]. Thêm về cách tiếp cận đó ở đây

Chúng ta có thể so sánh 2 từ điển trong Python không?

Sử dụng toán tử == để so sánh hai từ điển .

Có == cho Dict trong Python không?

Theo tài liệu python, bạn thực sự có thể sử dụng toán tử == trên từ điển .

Chủ Đề