Kiểm tra xem một khóa đã cho đã tồn tại trong từ điển chưa
Để có được ý tưởng làm thế nào, trước tiên chúng ta kiểm tra những phương thức nào chúng ta có thể gọi trong từ điển. Dưới đây là các phương pháp:
d={'clear':0, 'copy':1, 'fromkeys':2, 'get':3, 'items':4, 'keys':5, 'pop':6, 'popitem':7, 'setdefault':8, 'update':9, 'values':10}
Python Dictionary clear() Removes all Items
Python Dictionary copy() Returns Shallow Copy of a Dictionary
Python Dictionary fromkeys() Creates dictionary from given sequence
Python Dictionary get() Returns Value of The Key
Python Dictionary items() Returns view of dictionary (key, value) pair
Python Dictionary keys() Returns View Object of All Keys
Python Dictionary pop() Removes and returns element having given key
Python Dictionary popitem() Returns & Removes Element From Dictionary
Python Dictionary setdefault() Inserts Key With a Value if Key is not Present
Python Dictionary update() Updates the Dictionary
Python Dictionary values() Returns view of all values in dictionary
Phương thức tàn bạo để kiểm tra xem khóa đã tồn tại có thể là get()
phương thức:
d.get("key")
Hai phương pháp thú vị khác items()
và keys()
có vẻ như quá nhiều công việc. Vì vậy, hãy kiểm tra nếu get()
là phương pháp phù hợp với chúng tôi. Chúng tôi có lệnh của chúng tôi d
:
d= {'clear':0, 'copy':1, 'fromkeys':2, 'get':3, 'items':4, 'keys':5, 'pop':6, 'popitem':7, 'setdefault':8, 'update':9, 'values':10}
In ấn cho thấy chìa khóa chúng tôi không có sẽ trở lại None
:
print(d.get('key')) #None
print(d.get('clear')) #0
print(d.get('copy')) #1
Chúng tôi có thể sử dụng thông tin đó để lấy thông tin nếu khóa có hoặc không. Nhưng hãy xem xét điều này nếu chúng ta tạo ra một lệnh với một key:None
:
d= {'key':None}
print(d.get('key')) #None
print(d.get('key2')) #None
Dẫn đầu get()
phương pháp đó là không đáng tin cậy trong trường hợp một số giá trị có thể None
. Câu chuyện này nên có một kết thúc hạnh phúc hơn. Nếu chúng ta sử dụng bộ in
so sánh:
print('key' in d) #True
print('key2' in d) #False
Chúng tôi nhận được kết quả chính xác. Chúng tôi có thể kiểm tra mã byte Python:
import dis
dis.dis("'key' in d")
# 1 0 LOAD_CONST 0 ('key')
# 2 LOAD_NAME 0 (d)
# 4 COMPARE_OP 6 (in)
# 6 RETURN_VALUE
dis.dis("d.get('key2')")
# 1 0 LOAD_NAME 0 (d)
# 2 LOAD_METHOD 1 (get)
# 4 LOAD_CONST 0 ('key2')
# 6 CALL_METHOD 1
# 8 RETURN_VALUE
Điều này cho thấy in
toán tử so sánh không chỉ đáng tin cậy hơn mà thậm chí còn nhanh hơn get()
.
dict.keys()
tạo ra một danh sách các khóa, theo tài liệu docs.python.org/2/l Library / stdtypes.html#dict.keys nhưng tôi rất ngạc nhiên nếu mẫu này không được tối ưu hóa, trong một triển khai nghiêm túc, để dịch đểif 'key1' in dict:
.