티스토리 뷰
반응형
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
Should I use 'has_key()' or 'in' on Python dicts?
파이썬 딕트에서 'has_key()' 또는 'in'을 사용해야 합니까?
문제 내용
Given:
주어진 경우:
>>> d = {'a': 1, 'b': 2}
Which of the following is the best way to check if 'a'
is in d
?
다음 중 'a'가 d에 있는지 확인하는 가장 좋은 방법은 무엇입니까?
>>> 'a' in d
True
>>> d.has_key('a')
True
높은 점수를 받은 Solution
in
is definitely more pythonic.
in은 확실히 더 파이썬스럽습니다.
In fact has_key()
was removed in Python 3.x.
사실 has_key()는 파이썬 3.x에서 제거되었습다.
가장 최근 달린 Solution
Expanding on Alex Martelli's performance tests with Adam Parkin's comments...
Alex Martelli의 성능 테스트를 Adam Parkin의 코멘트와 함께 확장합니다.
$ python3.5 -mtimeit -s'd=dict.fromkeys(range( 99))' 'd.has_key(12)'
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/timeit.py", line 301, in main
x = t.timeit(number)
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/timeit.py", line 178, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
d.has_key(12)
AttributeError: 'dict' object has no attribute 'has_key'
$ python2.7 -mtimeit -s'd=dict.fromkeys(range( 99))' 'd.has_key(12)'
10000000 loops, best of 3: 0.0872 usec per loop
$ python2.7 -mtimeit -s'd=dict.fromkeys(range(1999))' 'd.has_key(12)'
10000000 loops, best of 3: 0.0858 usec per loop
$ python3.5 -mtimeit -s'd=dict.fromkeys(range( 99))' '12 in d'
10000000 loops, best of 3: 0.031 usec per loop
$ python3.5 -mtimeit -s'd=dict.fromkeys(range(1999))' '12 in d'
10000000 loops, best of 3: 0.033 usec per loop
$ python3.5 -mtimeit -s'd=dict.fromkeys(range( 99))' '12 in d.keys()'
10000000 loops, best of 3: 0.115 usec per loop
$ python3.5 -mtimeit -s'd=dict.fromkeys(range(1999))' '12 in d.keys()'
10000000 loops, best of 3: 0.117 usec per loop
출처 : https://stackoverflow.com/questions/1323410/should-i-use-has-key-or-in-on-python-dicts
반응형
'개발 > 파이썬' 카테고리의 다른 글
현재 실행 중인 파일의 경로와 이름 가져오기 (0) | 2022.12.10 |
---|---|
인덱스로 리스트에서 아이템 제거하기 (0) | 2022.12.10 |
전체 Pands 시리즈/데이터 프레임 이쁘게 인쇄하기 (0) | 2022.12.10 |
Dictionary 형태의 문자열 표현을 Dictionary로 변환하기 (0) | 2022.12.10 |
파이썬에서 Dictionary 키를 리스트로 가져오기 (0) | 2022.12.10 |
댓글
공지사항
최근에 올라온 글