Python kiểm tra xem hai từ điển có cùng khóa không

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ển là một biểu diễn cụ thể tốt cho các tập hợp trong Python, vì vậy các phép toán như giao điểm là phổ biến. Giả sử bạn có hai từ điển [nhưng giả sử rằng mỗi từ điển chứa hàng nghìn mục]

some_dict = { 'zope':'zzz', 'python':'rocks' }
another_dict = { 'python':'rocks', 'perl':'$' }

Đây là một cách tồi để tìm giao lộ của họ rất chậm

intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect

Và đây là một cách hay, đơn giản và nhanh chóng

intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect

Trong Python 2. 2, sau đây là thanh lịch và thậm chí nhanh hơn

________số 8

Và đây là một cách tiếp cận thay thế giúp giảm tốc độ, cho Python 1. 5. 2 trở lên

print "Intersects:", filter[another_dict.has_key, some_dict.keys[]]

Phương thức

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]
7 tạo danh sách tất cả các khóa của từ điển. Có thể khá hấp dẫn khi rơi vào cái bẫy chỉ sử dụng ________ 60, với danh sách này ở phía bên tay phải, để kiểm tra tư cách thành viên. Tuy nhiên, trong ví dụ đầu tiên, bạn đang lặp qua tất cả
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
1, sau đó mỗi lần lặp qua tất cả
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
2. Nếu
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
1 có N1 mục và
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
2 có N2 mục, thao tác giao cắt của bạn sẽ có thời gian tính toán tỷ lệ thuận với tích của N1x N2. [O[N1x N2] là ký hiệu khoa học máy tính phổ biến để biểu thị điều này. ]

Bằng cách sử dụng phương pháp

intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
5, bạn không lặp lại trên
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
2 nữa mà thay vào đó kiểm tra khóa trong bảng băm của từ điển. Thời gian xử lý cho
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
5 về cơ bản không phụ thuộc vào kích thước từ điển, vì vậy cách tiếp cận thứ hai là O[N1]. Sự khác biệt là khá đáng kể đối với các từ điển lớn. Nếu hai từ điển có kích thước rất khác nhau, điều quan trọng là sử dụng từ điển nhỏ hơn đóng vai trò là
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
1, trong khi từ điển lớn hơn đóng vai trò là
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
2 [i. e. , lặp lại các phím của từ điển nhỏ hơn, do đó chọn N1 nhỏ hơn]

Trăn 2. 2 cho phép bạn lặp trực tiếp trên các khóa của từ điển, với câu lệnh

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

Bạn có thể kiểm tra tư cách thành viên với thanh lịch không kém

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

thay vì tương đương nhưng kém hơn về mặt cú pháp

intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
0. Kết hợp hai cải tiến nhỏ nhưng hay này của Python 2. 2 với ký hiệu hiểu danh sách được giới thiệu trong Python 2. 0, chúng tôi kết thúc với một cách tiếp cận rất tao nhã, đồng thời ngắn gọn, rõ ràng và khá nhanh chóng

Tuy nhiên, cách tiếp cận nhanh nhất là cách sử dụng

intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
1 với phương pháp ràng buộc
intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
2 trong danh sách
intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
3. Một giao điểm điển hình của hai từ điển 500 mục với 50% trùng lặp, trên một máy giá rẻ điển hình ngày nay [AMD Athlon 1. 4GHz, RAM DDR2100, Mandrake Linux 8. 1], mất 710 micro giây khi sử dụng
intersect = []
for item in some_dict.keys[  ]:
    if item in another_dict.keys[  ]:
        intersect.append[item]
print "Intersects:", intersect
5, 450 micro giây khi sử dụng Python 2. 2 và 280 micro giây sử dụng cách dựa trên
intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
1. Mặc dù những khác biệt về tốc độ này gần như là đáng kể, nhưng chúng không đáng kể so với thời gian của đường xấu, theo đó một giao lộ thông thường mất 22.600 micro giây—dài hơn 30 lần so với đường đơn giản và 80 lần so với đường dựa trên
intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
1. Đây là mã thời gian, cho thấy một ví dụ điển hình về cách một người tiến hành đo tốc độ tương đối của các cấu trúc Python tương đương

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

Bạn có thể lưu mã này vào một tệp

intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
7 và chạy nó [tất nhiên là một vài lần, trên một máy không hoạt động] với
intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
8 để kiểm tra xem thời gian của các cấu trúc khác nhau so sánh như thế nào trên bất kỳ máy cụ thể nào mà bạn quan tâm. [Lưu ý rằng tập lệnh này yêu cầu Python 2. 2 hoặc muộn hơn. ] Định thời gian cho các đoạn mã khác nhau để tìm hiểu tốc độ tương đối của chúng so sánh như thế nào là một kỹ thuật quan trọng của Python, vì trực giác là một hướng dẫn nổi tiếng không đáng tin cậy đối với các phép so sánh tốc độ tương đối như vậy. Để biết hướng dẫn chi tiết và tổng quát về cách tính thời gian, hãy xem phần giới thiệu của Chương 17

Khi có thể áp dụng mà không cần phải sử dụng biểu mẫu

intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
9 hoặc chức năng được viết đặc biệt,
intersect = []
for item in some_dict.keys[  ]:
    if another_dict.has_key[item]:
        intersect.append[item]
print "Intersects:", intersect
1,
print "Intersects:", [k for k in some_dict if k in another_dict]
1 và
print "Intersects:", [k for k in some_dict if k in another_dict]
2 thường đưa ra giải pháp nhanh nhất cho bất kỳ vấn đề nào. Tất nhiên, một Pythonista thông minh chỉ quan tâm đến tốc độ đối với rất, rất ít thao tác mà tốc độ thực sự quan trọng hơn sự rõ ràng, đơn giản và sang trọng. Nhưng những phần mềm tích hợp này cũng khá thanh lịch theo cách riêng của chúng

Chúng tôi không có một công thức riêng cho việc kết hợp các phím của hai từ điển, nhưng đó là bởi vì nhiệm vụ này thậm chí còn dễ dàng hơn, nhờ vào phương thức

print "Intersects:", [k for k in some_dict if k in another_dict]
3 của từ điển

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

Để kiểm tra xem hai từ điển có cùng khóa không. Sử dụng lệnh. keys[] phương pháp 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.

Bạn có thể sử dụng == trên từ điển 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 .

Hai từ điển có thể có cùng khóa không?

Không, mỗi khóa trong từ điển phải là duy nhất. Bạn không thể có hai khóa có cùng giá trị . Cố gắng sử dụng lại cùng một khóa sẽ chỉ ghi đè lên giá trị được lưu trữ trước đó. Nếu một khóa cần lưu trữ nhiều giá trị thì giá trị được liên kết với khóa phải là một danh sách hoặc một từ điển khác.

Làm cách nào để so sánh hai ký tự trong Python?

Cách dễ nhất [và một trong những cách mạnh mẽ hơn] để so sánh sâu hai từ điển là tuần tự hóa chúng ở định dạng JSON, sắp xếp các khóa và so sánh kết quả chuỗi. nhập json nếu json. kết xuất [x, sort_keys=True] == json

Chủ Đề