Hướng dẫn how do you check if a key is present in a nested dictionary in python? - làm cách nào để kiểm tra xem khóa có trong từ điển lồng nhau trong python không?

Câu trả lời được chọn hoạt động tốt trên con đường hạnh phúc, nhưng có một vài vấn đề rõ ràng với tôi. Nếu bạn đã tìm kiếm ["Spam", "Egg", "Bacon", "Pizza"], nó sẽ gây ra lỗi loại do cố gắng lập chỉ mục "..." sử dụng chuỗi "pizza". Giống như khôn ngoan, nếu bạn thay thế pizza bằng 2, nó sẽ sử dụng nó để lấy chỉ số 2 từ "tốt ..."

Các vấn đề đầu ra câu trả lời được chọn::

data = {
    "spam": {
        "egg": {
            "bacon": "Well..",
            "sausages": "Spam egg sausages and spam",
            "spam": "does not have much spam in it"
        }
    }
}

print[keys_exists[data, "spam", "egg", "bacon", "pizza"]]
>> TypeError: string indices must be integers

print[keys_exists[data, "spam", "egg", "bacon", 2]]]
>> l

Tôi cũng cảm thấy rằng sử dụng thử ngoại trừ có thể là một cái nạng mà chúng ta có thể quá nhanh dựa vào. Vì tôi tin rằng chúng tôi đã cần kiểm tra loại, cũng có thể loại bỏ thử ngoại trừ.

Solution:

def dict_value_or_default[element, keys=[], default=Undefined]:
    '''
    Check if keys [nested] exists in `element` [dict].
    Returns value if last key exists, else returns default value
    '''
    if not isinstance[element, dict]:
        return default

    _element = element
    for key in keys:
        # Necessary to ensure _element is not a different indexable type [list, string, etc].  
        # get[] would have the same issue if that method name was implemented by a different object
        if not isinstance[_element, dict] or key not in _element:
            return default

        _element = _element[key]
        
    return _element 

Output:

print[dict_value_or_default[data, ["spam", "egg", "bacon", "pizza"]]]
>> INVALID

print[dict_value_or_default[data, ["spam", "egg", "bacon", 2]]]
>> INVALID

print[dict_value_or_default[data, ["spam", "egg", "bacon"]]]
>> "Well..."

Ví dụ hoàn chỉnh như sau.

Đầu ra

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

Trong bài viết này, chúng tôi sẽ thảo luận về 6 cách khác nhau để kiểm tra xem chính có tồn tại trong từ điển trong Python hay không.

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

Bây giờ chúng tôi muốn kiểm tra xem khóa ‘kiểm tra có tồn tại trong từ điển này hay không.

Có nhiều cách khác nhau để làm điều này. Hãy để chúng tôi thảo luận từng người một.

Quảng cáo

key in dictionary

Python: Kiểm tra xem khóa trong từ điển bằng cách sử dụng câu lệnh if-in

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

key = 'test'

# python check if key in dict using "in"
if key in word_freq:
    print[f"Yes, key: '{key}' exists in dictionary"]
else:
    print[f"No, key: '{key}' does not exists in dictionary"]

Output:

Yes, key: 'test' exists in dictionary

Ở đây, nó xác nhận rằng khóa ’kiểm tra tồn tại trong từ điển.

Bây giờ, hãy để thử nghiệm một ví dụ tiêu cực, tức là kiểm tra xem khóa ‘mẫu có tồn tại trong từ điển hay không, tức là không.

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

key = 'sample'

# python check if key in dict using "in"
if key in word_freq:
    print[f"Yes, key: '{key}' exists in dictionary"]
else:
    print[f"No, key: '{key}' does not exists in dictionary"]

Output:

No, key: 'sample' does not exists in dictionary

Ở đây, nó xác nhận rằng khóa ‘mẫu không tồn tại trong từ điển.

Python: Kiểm tra xem Dict có khóa sử dụng hàm get [] không

Trong Python, lớp Dict cung cấp một phương thức Get [] chấp nhận khóa và giá trị mặc định, tức là.

dict.get[key[, default]]

Hành vi của chức năng này,

  • Nếu được cho khóa tồn tại trong từ điển, thì nó sẽ trả về giá trị liên quan đến khóa này,
  • Nếu khóa được đưa ra không tồn tại trong từ điển, thì nó sẽ trả về đối số giá trị mặc định được truyền.
  • Nếu khóa được đưa ra không tồn tại trong từ điển và giá trị mặc định cũng không được cung cấp, thì nó không trả về không.

Hãy để chức năng sử dụng Get [] để kiểm tra xem có tồn tại chính trong từ điển hay không,

def dict_value_or_default[element, keys=[], default=Undefined]:
    '''
    Check if keys [nested] exists in `element` [dict].
    Returns value if last key exists, else returns default value
    '''
    if not isinstance[element, dict]:
        return default

    _element = element
    for key in keys:
        # Necessary to ensure _element is not a different indexable type [list, string, etc].  
        # get[] would have the same issue if that method name was implemented by a different object
        if not isinstance[_element, dict] or key not in _element:
            return default

        _element = _element[key]
        
    return _element 
0

Output:

No, key: 'sample' does not exists in dictionary

Ở đây, nó đã xác nhận rằng khóa ‘mẫu không tồn tại trong từ điển.

Chúng tôi đã vượt qua ‘đối số mẫu trong hàm get [], mà không có bất kỳ giá trị mặc định nào. Vì từ điển của chúng tôi không chứa khóa ANT ‘mẫu và không có giá trị mặc định được cung cấp, do đó nó không trả lại.

Nếu chúng ta vượt qua giá trị mặc định cùng với khóa và nếu khóa không tồn tại trong từ điển, thì nó sẽ trả về giá trị mặc định. Ví dụ,

def dict_value_or_default[element, keys=[], default=Undefined]:
    '''
    Check if keys [nested] exists in `element` [dict].
    Returns value if last key exists, else returns default value
    '''
    if not isinstance[element, dict]:
        return default

    _element = element
    for key in keys:
        # Necessary to ensure _element is not a different indexable type [list, string, etc].  
        # get[] would have the same issue if that method name was implemented by a different object
        if not isinstance[_element, dict] or key not in _element:
            return default

        _element = _element[key]
        
    return _element 
2

Output:

No, key: 'sample' does not exists in dictionary

Ở đây, nó đã xác nhận rằng khóa ‘mẫu không tồn tại trong từ điển.

Chúng tôi đã vượt qua ‘đối số mẫu trong hàm get [], mà không có bất kỳ giá trị mặc định nào. Vì từ điển của chúng tôi không chứa khóa ANT ‘mẫu và không có giá trị mặc định được cung cấp, do đó nó không trả lại.

Nếu chúng ta vượt qua giá trị mặc định cùng với khóa và nếu khóa không tồn tại trong từ điển, thì nó sẽ trả về giá trị mặc định. Ví dụ,

Chúng tôi đã vượt qua ‘đối số mẫu trong hàm get [], cùng với giá trị mặc định -1. Vì từ điển của chúng tôi không chứa khóa ANT ‘Mẫu, vì vậy, Hàm Get [] đã trả về giá trị mặc định.

Chúng ta không thể luôn luôn chắc chắn với kết quả của Dict.get [], điều quan trọng tồn tại trong từ điển hay không. Do đó, chúng ta nên sử dụng Dict.get [] để kiểm tra sự tồn tại của khóa trong từ điển chỉ khi chúng ta chắc chắn rằng không thể có một mục nhập khóa với giá trị mặc định đã cho.

def dict_value_or_default[element, keys=[], default=Undefined]:
    '''
    Check if keys [nested] exists in `element` [dict].
    Returns value if last key exists, else returns default value
    '''
    if not isinstance[element, dict]:
        return default

    _element = element
    for key in keys:
        # Necessary to ensure _element is not a different indexable type [list, string, etc].  
        # get[] would have the same issue if that method name was implemented by a different object
        if not isinstance[_element, dict] or key not in _element:
            return default

        _element = _element[key]
        
    return _element 
4

Output:

Yes, key: 'test' exists in dictionary

Python: Kiểm tra xem khóa trong Dict sử dụng Keys []

Chức năng khóa [] của từ điển trả về một chuỗi tất cả các khóa trong từ điển. Vì vậy, chúng ta có thể sử dụng từ khóa trong từ khóa với chuỗi các phím được trả về để kiểm tra xem khóa có tồn tại trong từ điển hay không. Ví dụ,

Ở đây, nó xác nhận rằng khóa ’kiểm tra tồn tại trong từ điển.KeyError. This can also be a way to check if exist in dict or not i.e.

def dict_value_or_default[element, keys=[], default=Undefined]:
    '''
    Check if keys [nested] exists in `element` [dict].
    Returns value if last key exists, else returns default value
    '''
    if not isinstance[element, dict]:
        return default

    _element = element
    for key in keys:
        # Necessary to ensure _element is not a different indexable type [list, string, etc].  
        # get[] would have the same issue if that method name was implemented by a different object
        if not isinstance[_element, dict] or key not in _element:
            return default

        _element = _element[key]
        
    return _element 
6

Output:

Yes, key: 'test' exists in dictionary

Python: Kiểm tra xem khóa trong Dict sử dụng Keys []

Chức năng khóa [] của từ điển trả về một chuỗi tất cả các khóa trong từ điển. Vì vậy, chúng ta có thể sử dụng từ khóa trong từ khóa với chuỗi các phím được trả về để kiểm tra xem khóa có tồn tại trong từ điển hay không. Ví dụ,

Ở đây, nó xác nhận rằng khóa ’kiểm tra tồn tại trong từ điển.

kiểm tra python nếu khóa trong từ điển bằng cách sử dụng thử/ngoại trừ

def dict_value_or_default[element, keys=[], default=Undefined]:
    '''
    Check if keys [nested] exists in `element` [dict].
    Returns value if last key exists, else returns default value
    '''
    if not isinstance[element, dict]:
        return default

    _element = element
    for key in keys:
        # Necessary to ensure _element is not a different indexable type [list, string, etc].  
        # get[] would have the same issue if that method name was implemented by a different object
        if not isinstance[_element, dict] or key not in _element:
            return default

        _element = _element[key]
        
    return _element 
8

Output:

No, key: 'sample' does not exists in dictionary

Python: Kiểm tra xem khóa trong Dict sử dụng Keys []

Chức năng khóa [] của từ điển trả về một chuỗi tất cả các khóa trong từ điển. Vì vậy, chúng ta có thể sử dụng từ khóa trong từ khóa với chuỗi các phím được trả về để kiểm tra xem khóa có tồn tại trong từ điển hay không. Ví dụ,

Ở đây, nó xác nhận rằng khóa ’kiểm tra tồn tại trong từ điển.

print[dict_value_or_default[data, ["spam", "egg", "bacon", "pizza"]]]
>> INVALID

print[dict_value_or_default[data, ["spam", "egg", "bacon", 2]]]
>> INVALID

print[dict_value_or_default[data, ["spam", "egg", "bacon"]]]
>> "Well..."
0

Output:

Yes, key: 'test' exists in dictionary

Python: Kiểm tra xem khóa trong Dict sử dụng Keys []

Chức năng khóa [] của từ điển trả về một chuỗi tất cả các khóa trong từ điển. Vì vậy, chúng ta có thể sử dụng từ khóa trong từ khóa với chuỗi các phím được trả về để kiểm tra xem khóa có tồn tại trong từ điển hay không. Ví dụ,

print[dict_value_or_default[data, ["spam", "egg", "bacon", "pizza"]]]
>> INVALID

print[dict_value_or_default[data, ["spam", "egg", "bacon", 2]]]
>> INVALID

print[dict_value_or_default[data, ["spam", "egg", "bacon"]]]
>> "Well..."
2

Ở đây, nó xác nhận rằng khóa ’kiểm tra tồn tại trong từ điển.

print[dict_value_or_default[data, ["spam", "egg", "bacon", "pizza"]]]
>> INVALID

print[dict_value_or_default[data, ["spam", "egg", "bacon", 2]]]
>> INVALID

print[dict_value_or_default[data, ["spam", "egg", "bacon"]]]
>> "Well..."
3

Bài Viết Liên Quan

Chủ Đề