Periksa apakah kunci yang diberikan sudah ada dalam kamus
Untuk mendapatkan ide bagaimana melakukannya, pertama-tama kita memeriksa metode apa yang bisa kita panggil dalam kamus. Berikut adalah metodenya:
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
Metode brutal untuk memeriksa apakah kunci sudah ada mungkin get()
metode:
d.get("key")
Dua metode lain yang menarikitems()
dan keys()
kedengarannya seperti terlalu banyak pekerjaan. Jadi mari kita periksa apakah get()
metode yang tepat untuk kita. Kami memiliki dict kami d
:
d= {'clear':0, 'copy':1, 'fromkeys':2, 'get':3, 'items':4, 'keys':5, 'pop':6, 'popitem':7, 'setdefault':8, 'update':9, 'values':10}
Pencetakan menunjukkan kunci yang tidak kita miliki akan kembali None
:
print(d.get('key')) #None
print(d.get('clear')) #0
print(d.get('copy')) #1
Kami dapat menggunakannya untuk mendapatkan info jika kunci ada atau tidak. Tetapi pertimbangkan ini jika kita membuat dict dengan satu key:None
:
d= {'key':None}
print(d.get('key')) #None
print(d.get('key2')) #None
Memimpin get()
metode itu tidak dapat diandalkan jika beberapa nilai mungkin None
. Kisah ini seharusnya memiliki akhir yang lebih bahagia. Jika kita menggunakan in
pembanding:
print('key' in d) #True
print('key2' in d) #False
Kami mendapatkan hasil yang benar. Kami dapat memeriksa kode 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
Ini menunjukkan bahwa in
operator pembanding tidak hanya lebih andal tetapi bahkan lebih cepat daripada get()
.
dict.keys()
membuat daftar kunci, menurut dokumentasi docs.python.org/2/library/stdtypes.html#dict.keys tetapi saya akan terkejut jika pola ini tidak dioptimalkan untuk, dalam implementasi yang serius, untuk menerjemahkan untukif 'key1' in dict:
.