반응형
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
결과:
= 37.0100378
= 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:")
반응형
'개발하자' 카테고리의 다른 글
다른 지역에 Terraform 코드 파이프라인 배포 (0) | 2023.07.12 |
---|---|
주피터 노트북에서 문서를 올바르게 포맷할 수 있는 방법이 있나요? (0) | 2023.07.11 |
두 요소 "점프" 사이의 부드러운 전환 (0) | 2023.07.10 |
Terraform에서 Azure 로드 밸런서용 가상 시스템 IP를 사용하여 백엔드를 추가하는 방법 (0) | 2023.07.09 |
스벨테에서 상위 구성 요소 마운트 및 파괴에서 전환 애니메이션을 비활성화하는 방법은 무엇입니까? (0) | 2023.07.09 |