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 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.# Dictionary of string and int
word_freq = {
"Hello": 56,
"at": 23,
"test": 43,
"this": 78
}
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
0Output:
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
2Output:
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
4Output:
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
6Output:
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
8Output:
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..."
0Output:
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