Jawaban:
len(yourdict.keys())
atau hanya
len(yourdict)
Jika Anda suka menghitung kata-kata unik dalam file, Anda bisa menggunakan setdan suka saja
len(set(open(yourdictfile).read().split()))
len(yourdict.keys())dan len(yourdict)O (1). Yang terakhir ini sedikit lebih cepat. Lihat tes saya di bawah ini.
len(yourdict.values())
Memanggil len()langsung pada kamus Anda berfungsi, dan lebih cepat daripada membangun iterator,, d.keys()dan memanggilnya len(), tetapi kecepatan keduanya akan diabaikan dibandingkan dengan apa pun yang sedang dilakukan program Anda.
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)
Jika pertanyaannya adalah tentang menghitung jumlah kata kunci maka akan merekomendasikan sesuatu seperti
def countoccurrences(store, value):
try:
store[value] = store[value] + 1
except KeyError as e:
store[value] = 1
return
dalam fungsi utama memiliki sesuatu yang loop melalui data dan meneruskan nilai ke fungsi countoccurrences
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"
Keluaran kode
Key a has occurred 2 times
Key c has occurred 2 times
Key b has occurred 1 times
countoccurrences()seharusnya count_occurrences(). Juga, jika Anda mengimpor collections.Counter, ada banyak cara yang lebih baik untuk melakukannya: from collections import Counter; store = Counter(); for data in list: store[list] += 1.
Beberapa modifikasi dibuat pada jawaban yang diposting UnderWaterKremlin untuk membuatnya menjadi bukti python3. Hasil mengejutkan di bawah ini sebagai jawaban.
Spesifikasi sistem:
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
Hasil:
1) = 37.0100378
2) = 37.002148899999995
Jadi sepertinya len(d.keys())saat ini lebih cepat daripada hanya menggunakan len().