티스토리 뷰
한국어로 표현하면 뭐라고 해야할 지 고민이 됩니다.
딕셔너리에서 여러 개의 key들이 존재하는 지 확인하는 방법.
딕셔너리에서 여러 단어들이 딕셔너리의 key 값으로 존재하는 지 확인하는 방법.
영어로 표현하면 그냥 간단히 check if lists of keys exist in dictionary 라고 할 수 있겠는데요.
https://stackoverflow.com/questions/10995172/check-if-list-of-keys-exist-in-dictionary
찾아본 바에 의하면 check if lists of keys exists in dictionary 라는 질문의 답변으로 위 글에서 설명하고 있었습니다.
다시 위 내용을 정리하자면 아래와 같이 사용할 수 있는데요!
a = {"name":"hello", "type":"haha"}
set(a).issubset(('name', 'test')) // False
a = {"name":"hello", "type":"haha"}
set(a).issubset(('name', 'type')) // True
위 코드에서는 a 라는 딕셔너리(dictionary)에 name 과 test 라는 key 가 모두 있는 지 확인해서 하나라도 빠졌다면 False 값을 반환하게 되는 코드입니다.
그리고 그 바로 아래 코드에서는 name 과 type 이라는 key 가 모두 있기 때문에 True 값을 반환합니다.
위처럼 코드를 작성해도 우리가 원하는 목적은 달성할 수 있습니다. 하지만 위에 제가 링크한 글에서는 성능상으로 비효율적이라고 합니다. 대안으로 all() 함수를 사용하라고 했는데요. 아래 코드를 보겠습니다.
a = {"name":"hello", "type":"haha"}
all([x in a for x in ['name','type']]) // True
a = {"name":"hello", "type":"haha"}
all([x in a for x in ['name','test']]) // False
all() 함수 안에 인자값으로 들어온 배열이 모두 True 값을 가지고 있다면 True 값을 반환합니다.
우선 [x in a for x in ['name', 'type']] 의 결과 값은 [True, True] 가 됩니다.
그리고 바로 아래 코드에서는 결과 값으로 test 가 와야할 곳에 type 이 와서 불일치함으로 [True, False] 배열이 만들어집니다. 그리고 이 배열이 all() 함수 안에 들어가면 하나라도 False 가 들어가면 False 를 반환하게 됩니다.
사실 위 예제에서는 설명하기 위해서 2개의 key 값이 있는 dictionary 형을 사용했지, 실제로는 여러 key 값들이 포함되어 있는 dictionary 예제에서 많이 사용하게 될 것 같습니다.
그리고 위 코드는 모두 반복문과 dictionary 의 keys() 함수와 같은 내장 함수들을 이용해서도 구현할 수 있는데요. 위 사용법의 주된 목적은 짧고 간결하게 해당 기능을 구현할 수 있도록 의도하고 있는 것 같습니다.
'프로그래밍 > Python' 카테고리의 다른 글
[Python] requests.exceptions.TooManyRedirects: Exceeded 30 redirects 오류해결 (0) | 2021.09.24 |
---|---|
[Python] 리스트(배열) 순서 거꾸로 뒤집기 (0) | 2021.09.24 |
[영어인가 한국어인가?] 파이썬으로 문장이 영어인지 한국어인지 구분하기 (0) | 2021.09.16 |
[크롤링] 파이썬으로 인스타그램 게시물 크롤링하기 (json) (16) | 2021.09.16 |
[오류해결] Python BeautifulSoup - MarkupResemblesLocatorWarning (0) | 2021.09.15 |