파이썬

[python] 주어진 키가 사전에 이미 존재하는지 확인

zooheon 2022. 8. 28. 20:26
반응형

키 값을 업데이트하기 전에 사전에 키가 있는지 테스트하고 싶었습니다. 다음 코드를 작성했습니다.

if 'key1' in dict.keys():
  print "blah"
else:
  print "boo"

이것이 이 작업을 수행하는 가장 좋은 방법이 아니라고 생각합니다. 사전에서 키를 테스트하는 더 좋은 방법이 있습니까?

 

in에 키가 있는지 테스트합니다 dict.

d = {"key1": 10, "key2": 23}

if "key1" in d:
    print("this will execute")

if "nonexistent key" in d:
    print("this will not")

dict.get()키가 없을 때 기본값을 제공하는 데 사용 합니다.

d = {}

for i in range(10):
    d[i] = d.get(i, 0) + 1

모든 키에 대한 기본값을 제공하려면 dict.setdefault()각 할당에서 다음 을 사용하십시오.

d = {}

for i in range(10):
    d[i] = d.setdefault(i, 0) + 1

또는 모듈 defaultdict에서 사용:collections

from collections import defaultdict

d = defaultdict(int)

for i in range(10):
    d[i] += 1

 

다음 key in my_dict대신 직접 사용 key in my_dict.keys():

if 'key1' in my_dict:
    print("blah")
else:
    print("boo")

키 목록에서 O(n) 선형 검색을 수행하는 것과 달리 사전의 O(1) 해싱을 사용하므로 훨씬 빠릅니다 .

 

in 키워드 를 사용하여 사전에 키가 있는지 테스트할 수 있습니다 .

d = {'a': 1, 'b': 2}
'a' in d # <== evaluates to True
'c' in d # <== evaluates to False

키를 변경하기 전에 사전에 키가 있는지 확인하는 일반적인 용도는 값을 기본값으로 초기화하는 것입니다(예: 값이 목록이고 추가할 수 있는 빈 목록이 있는지 확인하려는 경우) 키의 첫 번째 값을 삽입할 때). 그러한 경우 collections.defaultdict()에 관심 있는 유형을 찾을 수 있습니다.

has_key()이전 코드에서는 사전에 키의 존재를 확인하기 위해 더 이상 사용되지 않는 방법인 의 일부 사용을 찾을 수도 있습니다 ( key_name in dict_name대신 , 사용).

 

반응형