본문 바로가기

개발하자

Python 사전에서 고유 키 수 계산

반응형

Python 사전에서 고유 키 수 계산

나는 키워드를 키워드 반복에 매핑하는 사전을 가지고 있지만, 나는 구별되는 단어들의 목록만을 원하기 때문에 키워드의 수를 세고 싶었다. 키워드 수를 세는 방법이 있나요, 아니면 제가 다른 단어를 찾아야 하는 방법이 있나요?




이 기능을 사용하여 구별되는 단어의 수(즉, 사전의 항목 수)를 찾을 수 있습니다.

> a = {'foo':42, 'bar':69}
> len(a)
2

모든 고유 단어(예: 키)를 가져오려면 방법을 사용합니다.

> list(a.keys())
['foo', 'bar']



len(yourdict.keys())

아니면 그냥

len(yourdict)

파일에서 고유 단어를 세고 싶다면 다음과 같이 사용할 수 있습니다

len(set(open(yourdictfile).read().split()))



키워드 수를 세는 문제라면 다음과 같은 것을 추천합니다:

def countoccurrences(store, value):
    try:
        store[value] = store[value] + 1
    except KeyError as e:
        store[value] = 1
    return

주 함수에서는 데이터를 순환하고 값을 함수로 전달하는 것을 사용합니다:

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



사전에서 직접 호출하는 것이 작동하며, 반복기를 만들고 호출하는 것보다 빠르지만 프로그램이 수행하는 다른 작업에 비해 속도는 무시할 수 있습니다.

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)



게시된 답변 UnderWaterKremlin에서 Python 3 프루프로 만들기 위해 일부 수정이 이루어졌다. 놀라운 결과는 답으로 아래와 같습니다.

시스템 사양:

  • Python = 3.7.4,
  • = 4.8.0
  • 3.6GHz, 8코어, 16GB.
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

그래서 그것은 현재 사용하는 것보다 더 빠른 것 같다.




사전에서 키워드 수를 계산하려면:

def dict_finder(dict_finders):
    x=input("Enter the thing you want to find: ")
    if x in dict_finders:
        print("Element found")
    else:
        print("Nothing found:")

반응형