Відповіді:
len(yourdict.keys())
або просто
len(yourdict)
Якщо ви хочете порахувати унікальні слова у файлі, ви можете просто використовувати set
та робити так
len(set(open(yourdictfile).read().split()))
len(yourdict.keys())
і len(yourdict)
є O (1). Останнє трохи швидше. Дивіться мої тести нижче.
len(yourdict.values())
Виклик len()
безпосередньо у вашому словнику працює, і швидше, ніж створення ітератора, d.keys()
та виклик len()
на ньому, але швидкість будь-якого буде незначною порівняно з тим, що робить ваша програма.
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)
Якщо питання стосується підрахунку кількості ключових слів, то рекомендуємо щось подібне
def countoccurrences(store, value):
try:
store[value] = store[value] + 1
except KeyError as e:
store[value] = 1
return
у головній функції є щось, що проходить через дані та передає значення функції функцій 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"
Код виводить
Key a has occurred 2 times
Key c has occurred 2 times
Key b has occurred 1 times
countoccurrences()
повинно бути count_occurrences()
. Крім того , якщо ви імпортуєте collections.Counter
, є набагато кращий спосіб зробити це: from collections import Counter; store = Counter(); for data in list: store[list] += 1
.
Деякі зміни були внесені в розміщенні відповіді UnderWaterKremlin, щоб зробити це підтвердженням python3. Дивовижний результат нижче як відповідь.
Характеристики системи:
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
Результат:
1) = 37.0100378
2) = 37,002148899999995
Тож здається, що len(d.keys())
наразі швидше, ніж просто використання len()
.