Belirli bir anahtarın sözlükte zaten mevcut olup olmadığını kontrol edin
Bunun nasıl yapılacağı hakkında fikir edinmek için önce sözlükte hangi yöntemleri arayabileceğimizi denetleriz. İşte yöntemler:
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
Anahtarın zaten var olup olmadığını kontrol etmek için acımasız yöntem yöntem olabilir get()
:
d.get("key")
Diğer iki ilginç yöntem items()
ve keys()
ses çok fazla iş gibi. Öyleyse get()
bizim için doğru yöntem olup olmadığını inceleyelim . Bizim sözümüz d
:
d= {'clear':0, 'copy':1, 'fromkeys':2, 'get':3, 'items':4, 'keys':5, 'pop':6, 'popitem':7, 'setdefault':8, 'update':9, 'values':10}
Yazdırma, sahip olmadığımız anahtarı gösterir None
:
print(d.get('key')) #None
print(d.get('clear')) #0
print(d.get('copy')) #1
Biz olabilir anahtar mevcut veya hiç ise bilgi almak için kullanabilirsiniz. Ama tek bir diksiyon oluşturursak bunu düşünün key:None
:
d= {'key':None}
print(d.get('key')) #None
print(d.get('key2')) #None
get()
Bazı değerlerin olması durumunda bu yönteme öncülük etmek güvenilir değildir None
. Bu hikayenin daha mutlu bir sonu olmalı. in
Karşılaştırıcıyı kullanırsak :
print('key' in d) #True
print('key2' in d) #False
Doğru sonuçları alıyoruz. Python bayt kodunu inceleyebiliriz:
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
Bu in
karşılaştırma operatörün sadece daha güvenilir değil, daha hızlı olduğunu gösterir get()
.
dict.keys()
, docs.python.org/2/library/stdtypes.html#dict.keys belgelerine göre bir anahtar listesi oluşturur, ancak bu modelin ciddi bir uygulamada çeviri için optimize edilmemesi durumunda şaşırırdım içinif 'key1' in dict:
.