Python dict so sánh trực tuyến

Trong bài đăng này, chúng tôi xem xét cách so sánh hai danh sách từ điển trong Python và cũng in ra sự khác biệt giữa hai danh sách

Phương pháp so sánh so sánh các khóa và giá trị trong từ điển

Ngoài ra, thứ tự của các phần tử không quan trọng khi so sánh hai danh sách từ điển trong Python

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

if __name__ == '__main__':

    list_1 = [
        {'id': '123-abc', 'name': 'Mike', 'age': 40},
        {'name': 'John', 'age': 34, 'id': '123-efg'},
        {'age': 32, 'id': '123-xyz', 'name': 'Aly'}
    ]

    list_2 = [
        {'name': 'Mike', 'id': '123-abc', 'age': 40},
        {'id': '123-efg', 'age': 34, 'name': 'John'},
        {'id': '123-xyz', 'name': 'Aly', 'age': 32}
    ]

    assert [i for i in list_1 if i not in list_2] == []

Trong đoạn mã trên,

The common keys are : {'x', 'y'}
5 và
The common keys are : {'x', 'y'}
6 bằng nhau. Nghĩa là, mỗi từ điển chứa các mục giống nhau [khóa và giá trị] trong cả hai danh sách. Thứ tự của các phần tử trong mỗi từ điển là không liên quan

Trong hướng dẫn này, chúng ta có hai từ điển và muốn tìm ra điểm chung của chúng [chẳng hạn như cùng khóa, cùng giá trị, v.v. ]. Về cơ bản có một số điểm tương đồng giữa hai cuốn từ điển và bạn phải tìm ra những điểm tương đồng này thì bài viết này là hữu ích nhất. VẬY, hãy bắt đầu học cách so sánh hai từ điển trong Python và tìm điểm tương đồng giữa chúng

Điểm tương đồng giữa các từ điển trong Python

Về cơ bản Từ điển là ánh xạ giữa một bộ khóa và giá trị. Các phím hỗ trợ các hoạt động cơ bản như hợp nhất, giao điểm và khác biệt. Khi chúng ta gọi phương thức items[] trong từ điển thì nó chỉ trả về cặp [key, value]

Bây giờ, hãy xem xét hai từ điển

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }

Tìm khóa chung của hai từ điển trong Python

Ở đây, chúng tôi viết một đoạn mã tìm các khóa phổ biến trong hai từ điển như

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 } 
common_keys = a.keys[] & b.keys[] # intersection operation on keys
print["The common keys are :",common_keys]

đầu ra

The common keys are : {'x', 'y'}

Tìm các khóa trong từ điển A không có trong từ điển B

Bây giờ, chúng tôi đang tìm các khóa có trong từ điển a và không có trong từ điển b như

A = {   'x' : 1,   'y' : 2,   'z' : 3 }
B = {   'w' : 10,   'x' : 11,   'y' : 2 } 
diffrent_keys = A.keys[] - B.keys[]   
print["The key that are in A and not in B are :",diffrent_keys]

đầu ra

The key that are in A and not in B are : {'z'}

Tìm các cặp [khóa, giá trị] phổ biến trong từ điển bằng Python

Bây giờ, chúng tôi thực hiện một thao tác mà chúng tôi đang tìm cặp [khóa, giá trị] phổ biến trong cả hai từ điển như

Tải URL bên ngoài Python trong URL trình duyệt như thế này https. // làm đẹp mã. org/python-formatter-beautifier?url=external-url

Tải dữ liệu Python trong đầu vào URL của trình duyệt như thế này https. // làm đẹp mã. org/python-formatter-beautifier?input=inputdata

Cách dễ nhất để so sánh các từ điển Python chỉ đơn giản là sử dụng cùng một toán tử đẳng thức mà bạn sử dụng trên các loại Python khác, “==”. Điều này hoạt động tốt trong hầu hết các trường hợp, nhưng nó phụ thuộc vào hành vi của “==” đối với các giá trị liên quan. Nếu bạn cần một bài kiểm tra nghiêm ngặt hơn, điều này có thể được thực hiện trong một vài dòng mã

quảng cáo

Python nhất quán

Hai trong số những lợi ích của Python là dễ sử dụng và nhất quán. Ví dụ, nó khác với Java, nơi so sánh chuỗi so sánh các tham chiếu đối tượng và bạn phải sử dụng phương thức “bằng” để thực hiện so sánh chuỗi mà bạn muốn thực hiện. Ngược lại, trong Python, phần lớn bạn có thể dựa vào

True
True
True
3 để làm điều đúng trong hầu hết thời gian

Hãy xem xét đoạn mã sau

string = "Hello"
same_string = "Hello"
number = 3
same_number = 3
boolean = True
same_boolean = True

print[string == same_string]
print[number == same_number]
print[boolean == same_boolean]

đầu ra

Quảng cáo
True
True
True

Tất nhiên, điều này cũng hiệu quả đối với các trường hợp tiêu cực, như bạn mong đợi.

True
True
True
4 trả về
True
True
True
5

So sánh từ điển với các loại khác

Python không chỉ phù hợp với các loại đơn giản, nó cũng thực hiện kiểm tra bình đẳng hợp lý cho các loại phức tạp hơn. Hãy xem điều này cho từ điển

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
1

đầu ra

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
2

Vì những gì đang được kiểm tra có lẽ ít rõ ràng hơn một chút so với các loại đơn giản, hãy thử thay đổi các yếu tố khác nhau

Quảng cáo
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
3

đầu ra

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
4

Ba trường hợp đầu tiên là khá nhiều những gì chúng ta mong đợi. Cái cuối cùng cần một số giải thích

Thận trọng với các loại tương thích bình đẳng

Điều đang xảy ra trong trường hợp cuối cùng là chúng ta đang so sánh một

True
True
True
6 [một số nguyên] với
True
True
True
7 [một giá trị dấu phẩy động]. Đằng sau hậu trường, giá trị số nguyên chuyển đổi thành số float, hai số float được so sánh và phép so sánh trả về true. Điều này không liên quan gì đến từ điển - nó chỉ là một thuộc tính của các giá trị được so sánh. theo cùng một cách

Quảng cáo
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
7

đầu ra

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
2

Điều gì xảy ra nếu chúng ta cần kiểm tra bình đẳng mạnh mẽ hơn?

Nếu chúng ta cần kiểm tra xem các từ điển có bằng nhau không và các loại của tất cả các giá trị có bằng nhau hay không, điều đó tương đối đơn giản trong Python. Đây là một phiên bản của một phương pháp sẽ hoạt động

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
9

Để kiểm tra điều này, chúng ta có thể chạy lại các trường hợp ban đầu của mình, lần này sử dụng hàm thay vì

True
True
True
3. Chúng tôi cũng sẽ kiểm tra thêm một lần nữa các từ điển mà chúng tôi biết là giống nhau để đảm bảo trường hợp đó hoạt động

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 } 
common_keys = a.keys[] & b.keys[] # intersection operation on keys
print["The common keys are :",common_keys]
1

đầu ra

True
True
True
0

Sử dụng “==” cho các Bộ sưu tập Python khác

Như chúng ta đã thấy, cách xử lý bình đẳng của Python đối với từ điển nhất quán với cách xử lý bình đẳng của nó đối với các loại đơn giản như số và chuỗi

Tính nhất quán này cũng mở rộng cho các loại và bộ sưu tập được soạn sẵn khác, cũng như các bộ sưu tập được xác định trong các mô-đun thư viện chuẩn của Python. Ví dụ: ở đây chúng tôi chứng minh rằng nó hoạt động đối với danh sách, bộ, bộ và mảng

Quảng cáo
True
True
True
1

Đầu ra là như chúng ta mong đợi

True
True
True
2

Điều gì về các loại do người dùng xác định?

Chủ đề này nâng cao hơn một chút so với những gì chúng ta đang thảo luận, nhưng tôi muốn đưa nó vào cho những độc giả có thể đang tự hỏi: “Làm thế nào đạt được sự nhất quán như vậy? . ”
The answer is, “Yes, you can.”

Mặc dù bạn có thể không cần nó cho các trường hợp đơn giản, nhưng cũng có thể định nghĩa các phương thức trên các lớp do người dùng định nghĩa sẽ cho phép người tiêu dùng thuộc lớp của bạn sử dụng các toán tử so sánh tiêu chuẩn [

True
True
True
3,
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
10,
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
11,
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
12,
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
13,
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
14, v.v. ]. Điều này không được thực hiện trực tiếp thông qua nạp chồng toán tử, như trong C++. Thay vào đó, Python cho phép điều này thông qua các phương thức đặc biệt như
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
15,
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
16,
a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
17, v.v. Chúng được gọi là "phương pháp ma thuật" hoặc đôi khi là phương pháp "dunder" [dunder xuất phát từ "dấu gạch dưới kép" ở đầu và cuối mỗi phương thức]

Những phương pháp kỳ diệu như vậy có mặt khắp nơi trong Python và tạo thành một phần quan trọng trong cuốn sách Fluent Python gọi là “mô hình dữ liệu Python”. Trong trường hợp những gì chúng ta đang thảo luận bây giờ, các toán tử so sánh khác nhau, mô-đun

a = {   'x' : 1,   'y' : 2,   'z' : 3 }
b = {   'w' : 10,   'x' : 11,   'y' : 2 }
18 của Python chứa một lối tắt hữu ích giúp bạn không phải triển khai từng phương thức này một cách riêng lẻ. Có thể chỉ cần xác định hai phương thức như vậy và phần còn lại được thực hiện tự động, sử dụng trình trang trí. Tài liệu Python cho trình trang trí đó chứa một ví dụ hữu ích mà bạn có thể sử dụng làm điểm bắt đầu cho các lớp của riêng mình

Làm cách nào để so sánh 2 dict trong Python?

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

Làm cách nào để kiểm tra xem hai từ điển có cùng khóa và giá trị không?

Để kiểm tra xem hai từ điển có cùng khóa không. .
Sử dụng chính tả. keys[] để so sánh các khóa của từ điển
Nếu so sánh đẳng thức trả về True , từ điển có cùng khóa

Làm cách nào để kiểm tra xem dict có chứa khóa Python không?

Kiểm tra xem khóa có tồn tại hay không bằng cách sử dụng has_key[] .

Làm cách nào để lặp qua từ điển trong Python?

Có nhiều cách để lặp lại một từ điển trong Python. .
Khóa truy cập bằng cách sử dụng bản dựng. phím[]
Phím truy cập mà không cần sử dụng phím[]
Lặp lại tất cả các giá trị bằng cách sử dụng. giá trị[]
Lặp lại tất cả các cặp khóa và giá trị bằng cách sử dụng items[]
Truy cập cả khóa và giá trị mà không cần sử dụng items[]
In các mục trong Khóa-Giá trị theo cặp

Chủ Đề