Hướng dẫn how do you check if a variable is in a dictionary python? - làm cách nào để kiểm tra xem một biến có nằm trong python từ điển không?

Làm thế nào bạn sẽ kiểm tra xem một biến là một từ điển trong Python?

Đây là một câu hỏi tuyệt vời, nhưng thật không may là câu trả lời được nâng cấp nhiều nhất dẫn đến một khuyến nghị kém,

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
1.

[Lưu ý rằng bạn cũng không nên sử dụng

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
2 làm tên biến - đó là tên của đối tượng tích hợp.]

Nếu bạn đang viết mã sẽ được nhập và sử dụng bởi những người khác, đừng cho rằng họ sẽ sử dụng trực tiếp Dict Buildin - làm cho giả định đó làm cho mã của bạn không linh hoạt hơn và trong trường hợp này, hãy tạo các lỗi dễ bị ẩn mà không gây ra cho chương trình .

Tôi thực sự đề xuất, với mục đích chính xác, khả năng bảo trì và tính linh hoạt cho người dùng trong tương lai, không bao giờ có các biểu thức không linh hoạt hơn, không linh hoạt trong mã của bạn khi có các biểu thức thành ngữ linh hoạt hơn.

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
3 là một thử nghiệm cho nhận dạng đối tượng. Nó không hỗ trợ kế thừa, nó không hỗ trợ bất kỳ sự trừu tượng nào và nó không hỗ trợ giao diện.

Vì vậy, tôi sẽ cung cấp một số tùy chọn làm.

Hỗ trợ thừa kế:

Đây là khuyến nghị đầu tiên tôi sẽ đưa ra, bởi vì nó cho phép người dùng cung cấp lớp con Dict của riêng họ hoặc

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
4,
try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
5 hoặc
try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
6 từ mô -đun Bộ sưu tập:

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
7

Nhưng thậm chí còn có những lựa chọn linh hoạt hơn.

Hỗ trợ trừu tượng:

from collections.abc import Mapping

if isinstance[any_object, Mapping]:

Điều này cho phép người dùng mã của bạn sử dụng việc triển khai tùy chỉnh của riêng họ về ánh xạ trừu tượng, cũng bao gồm bất kỳ lớp con nào của

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
2 và vẫn có được hành vi chính xác.

Sử dụng giao diện

Bạn thường nghe lời khuyên OOP, "Chương trình cho một giao diện".

Chiến lược này tận dụng sự đa hình của Python hoặc gõ vịt.

Vì vậy, chỉ cần cố gắng truy cập giao diện, bắt các lỗi mong đợi cụ thể [

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
9 trong trường hợp không có
# Dictionary of string and int
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 78
}
0 và
# Dictionary of string and int
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 78
}
1 trong trường hợp
# Dictionary of string and int
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 78
}
2 không thể gọi được] với dự phòng hợp lý - và bây giờ bất kỳ lớp nào thực hiện giao diện sẽ cung cấp cho bạn các mục của nó [lưu ý
# Dictionary of string and int
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 78
}
3 đã biến mất trong Python 3]:

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...

Có lẽ bạn có thể nghĩ rằng sử dụng việc sử dụng vịt như thế này đi quá xa trong việc cho phép quá nhiều dương tính giả, và nó có thể, tùy thuộc vào mục tiêu của bạn cho mã này.

Sự kết luận

Không sử dụng

try:
    items = any_object.items[]
except [AttributeError, TypeError]:
    non_items_behavior[any_object]
else: # no exception raised
    for item in items: ...
3 để kiểm tra các loại cho luồng điều khiển tiêu chuẩn. Sử dụng
# Dictionary of string and int
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 78
}
5, xem xét các trừu tượng như
# Dictionary of string and int
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 78
}
6 hoặc
# Dictionary of string and int
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 78
}
7 và xem xét tránh kiểm tra loại hoàn toàn, sử dụng giao diện trực tiếp.

Trong bài viết này, chúng tôi sẽ thảo luận về các cách khác nhau để kiểm tra xem giá trị có tồn tại trong từ điển hay không. Chúng tôi sẽ bao gồm các cách sau,

  • Kiểm tra xem giá trị có tồn tại trong một dict bằng cách sử dụng câu lệnh không
  • Kiểm tra xem một giá trị có tồn tại trong từ điển Python sử dụng cho vòng lặp không
  • Kiểm tra xem giá trị có tồn tại trong từ điển bằng cách sử dụng bất kỳ [] và danh sách hiểu không

Giả sử chúng ta có một từ điển của chuỗi và ints, tức là.

# Dictionary of string and int
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 78
}

Bây giờ trong từ điển này, chúng tôi muốn kiểm tra xem có bất kỳ khóa nào chứa giá trị 43 hay không. Có nhiều cách khác nhau để tìm kiếm một giá trị trong từ điển, hãy để chúng tôi thảo luận từng cái một,

Kiểm tra xem giá trị có tồn tại trong Dict bằng cách sử dụng câu lệnh không

Từ điển Python cung cấp một giá trị phương thức [], trả về một chuỗi tất cả các giá trị liên quan đến các khóa trong từ điển. Chúng ta có thể sử dụng ‘trong từ khóa để kiểm tra xem giá trị của chúng ta có tồn tại trong chuỗi giá trị đó hay không. Ví dụ,

Quảng cáo

value = 43

# python check if value exist in dict using "in" & values[]
if value in word_freq.values[]:
    print[f"Yes, Value: '{value}' exists in dictionary"]
else:
    print[f"No, Value: '{value}' does not exists in dictionary"]

Output:

Yes, Value: '43' exists in dictionary

Ở đây, giá trị 43 tồn tại từ điển của chúng tôi do đó nó trong tuyên bố được đánh giá là đúng.

Hãy cùng xem xét một ví dụ tiêu cực, nơi chúng ta sẽ cố gắng kiểm tra một giá trị không tồn tại trong từ điển. Ví dụ,

value = 51

# python check if value exist in dict using "in" & values[]
if value in word_freq.values[]:
    print[f"Yes, Value: '{value}' exists in dictionary"]
else:
    print[f"No, Value: '{value}' does not exists in dictionary"]

Output:

No, Value: '51' does not exists in dictionary

Ở đây, giá trị 51 không tồn tại trong từ điển của chúng tôi do đó nếu câu lệnh được đánh giá là sai.

Những bài viết liên quan:

  • Nhận khóa liên kết với một giá trị trong một từ điển.
  • Python: Kiểm tra xem chính có tồn tại theo từ điển không [6 cách]

Kiểm tra xem một giá trị có tồn tại trong từ điển Python sử dụng cho vòng lặp không

Chúng ta có thể lặp lại tất cả các cặp từ điển giá trị khóa bằng cách sử dụng vòng lặp và trong khi lặp lại, chúng ta có thể kiểm tra xem giá trị của chúng ta có khớp với bất kỳ giá trị nào trong các cặp giá trị khóa không. Chúng tôi đã tạo ra một chức năng riêng cho việc này. Hãy để hiểu điều này với một ví dụ,

def check_value_exist[test_dict, value]:
    do_exist = False
    for key, val in test_dict.items[]:
        if val == value:
            do_exist = True
    return do_exist

value = 43

# Iterate over all key, value pairs in dict and check if value exist
if check_value_exist[word_freq, value]:
    print[f"Yes, Value: '{value}' exists in dictionary"]
else:
    print[f"No, Value: '{value}' does not exists in dictionary"]

Output:

Yes, Value: '43' exists in dictionary

Vì giá trị 43 tồn tại trong từ điển của chúng tôi, do đó Check_value_exist [] đã trả về đúng.

Kiểm tra xem giá trị có tồn tại trong từ điển bằng cách sử dụng bất kỳ [] và danh sách hiểu không

Sử dụng danh sách hiểu, lặp qua một chuỗi của tất cả các cặp giá trị khóa trong từ điển và tạo một danh sách bool. Danh sách sẽ chứa một sự thật cho mỗi lần xuất hiện giá trị của chúng tôi trong từ điển. Sau đó gọi bất kỳ [] chức năng nào trong danh sách các bools để kiểm tra xem nó có chứa bất kỳ đúng nào không. Nếu có thì điều đó có nghĩa là giá trị của chúng tôi tồn tại trong bất kỳ cặp giá trị khóa nào của từ điển.

# Check if key exist in dictionary using any[]
if any[[True for k,v in word_freq.items[] if v == value]]:
    print[f"Yes, Value: '{value}' exists in dictionary"]
else:
    print[f"No, Value: '{value}' does not exists in dictionary"]

Output:

Yes, Value: '43' exists in dictionary

Ở đây, giá trị 43 tồn tại trong từ điển do đó bất kỳ [] đã trả về đúng.

Conclusion:

Vì vậy, đây là những cách khác nhau để kiểm tra xem một giá trị có tồn tại trong từ điển hay không.

Làm thế nào để bạn kiểm tra xem khóa có ở trong một từ điển không?

Bạn có thể kiểm tra xem một khóa có tồn tại trong từ điển bằng phương thức khóa [] và trong toán tử không. Cái này là cái gì? Phương thức khóa [] sẽ trả về một danh sách các khóa có sẵn trong từ điển và nếu, trong câu lệnh sẽ kiểm tra xem khóa được truyền có sẵn trong danh sách không. Nếu chìa khóa tồn tại, nó trả về true khác, nó sẽ trả về sai.using the keys[] method and IN operator. What is this? The keys[] method will return a list of keys available in the dictionary and IF , IN statement will check if the passed key is available in the list. If the key exists, it returns True else, it returns False .

Làm thế nào để bạn kiểm tra xem một đối tượng là danh sách hay từ điển?

Vì Python 2.2, bạn nên sử dụng mã này: nếu isInstance [list2, [str, list, dict]]: isInstance [] lấy một tuple làm đối số thứ hai và trả về true nếu loại nằm trong tuple.if isinstance[list2, [str, list, dict]]: isinstance[] takes a tuple as second argument and returns true if the type is in the tuple.

Làm thế nào để bạn kiểm tra một khóa tồn tại trong từ điển hoặc không thông qua KeyError?

Kiểm tra Python nếu khóa trong từ điển bằng cách sử dụng thử/ngoại trừ nếu chúng ta cố gắng truy cập giá trị của khóa không tồn tại trong từ điển, thì nó sẽ tăng KeyError.Đây cũng có thể là một cách để kiểm tra xem có tồn tại trong Dict hay không, tức là ở đây nó xác nhận rằng 'kiểm tra' chính tồn tại trong từ điển.

Bạn có thể sử dụng các biến trong một python từ điển không?

Bất cứ điều gì có thể được lưu trữ trong một biến Python đều có thể được lưu trữ trong một giá trị từ điển.Điều đó bao gồm các loại có thể thay đổi bao gồm danh sách và thậm chí là Dict - có nghĩa là bạn có thể làm tổ từ điển bên trong một loại khác.Các phím ngược phải có thể băm và bất biến - đối tượng băm không được thay đổi sau khi tính toán.. That includes mutable types including list and even dict — meaning you can nest dictionaries inside on another. In contrast keys must be hashable and immutable — the object hash must not change once calculated.

Bài Viết Liên Quan

Chủ Đề