Yanıtlar:
len(yourdict.keys())
ya da sadece
len(yourdict)
Dosyadaki benzersiz kelimeleri saymak isterseniz, sadece kullanabilirsiniz setve
len(set(open(yourdictfile).read().split()))
len(yourdict.keys())ve len(yourdict)O (1) vardır. İkincisi biraz daha hızlı. Aşağıdaki testlerime bakın.
len(yourdict.values())
len()Doğrudan sözlüğünüze çağrı yapmak çalışır ve yineleyici oluşturmaktan d.keys()ve çağırmaktan daha hızlıdır len(), ancak her ikisinin hızı, programınızın yaptığı her şeye kıyasla önemsiz olacaktır.
d = {x: x**2 for x in range(1000)}
len(d)
# 1000
len(d.keys())
# 1000
%timeit len(d)
# 41.9 ns ± 0.244 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit len(d.keys())
# 83.3 ns ± 0.41 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
Soru, anahtar kelime sayısını saymakla ilgili ise,
def countoccurrences(store, value):
try:
store[value] = store[value] + 1
except KeyError as e:
store[value] = 1
return
ana işlevde veriler arasında dolaşan ve değerleri sayım işlevine geçiren bir şey var
if __name__ == "__main__":
store = {}
list = ('a', 'a', 'b', 'c', 'c')
for data in list:
countoccurrences(store, data)
for k, v in store.iteritems():
print "Key " + k + " has occurred " + str(v) + " times"
Kod çıktıları
Key a has occurred 2 times
Key c has occurred 2 times
Key b has occurred 1 times
countoccurrences() bunun yerine dikte edilmelidir count_occurrences(). İçe Ayrıca, collections.Counterbunu yapmak için çok daha iyi bir yolu vardır: from collections import Counter; store = Counter(); for data in list: store[list] += 1.
Python3 kanıtı yapmak için UnderWaterKremlin cevabında bazı değişiklikler yapıldı. Aşağıdaki cevap şaşırtıcı bir sonuç.
Sistem özellikleri:
import timeit
d = {x: x**2 for x in range(1000)}
#print (d)
print (len(d))
# 1000
print (len(d.keys()))
# 1000
print (timeit.timeit('len({x: x**2 for x in range(1000)})', number=100000)) # 1
print (timeit.timeit('len({x: x**2 for x in range(1000)}.keys())', number=100000)) # 2
Sonuç:
1) = 37.0100378
2) = 37.002148899999995
Yani len(d.keys())şu anda sadece kullanmaktan daha hızlı görünüyor len().