답변:
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()
.