본문 바로가기
coding 📟/python 💻

[Python] 딕셔너리 컴프리헨션 + 집합, 제너레이터 컴프리헨션

by 고돌한 데이터 사이언스 2022. 5. 20.
반응형

 

저번에 python 컴프리헨션 쓰는 이유와 그 중에서도 list 컴프리헨션 사용법에 대해 정리하였다.

아래의 게시글을 참고하자.

 

2022.05.20 - [coding 📟/python 💻] - [Python] 리스트 컴프리헨션 List Comprension (if else)

 

[Python] 리스트 컴프리헨션 List Comprension (if else)

아마 필자 포함 많은 분들이 파이썬에서 루프문을 작성하여 새로운 리스트 생성시 많이 사용할거라 생각되는 리스트 컴프리헨션 list comprehension 을 정리해보고자 한다. Comprehension 이란? 원하는

kodorricoding.tistory.com

 

이번에는 컴프리헨션 중 리스트를 제외한 

  1. Dictionary Comprehension
  2. Set Comprehension
  3. Generator Comprehension

에 대해 알아보자

 

딕셔너리 컴프리헨션


리스트 컴프리헨션과 크게 다른 부분은 없다.

대괄호[]를 중괄호{}로 바꿔주고 딕셔너리 구조 대로 키(key) 와 값(value)를 콜론(":") 을 통해 정의해주면 된다.

nums = {i:i for i in range(1,11)}

위와 같이 딕셔너리 컴프리헨션을 통해 딕셔너리를 생성할 수 있지만

아마 이런 케이스의 경우 사용할 일이 적다고 생각한다.

 

필자의 생각으로는 두가지 경우 사용하면 더욱 효과적이다고 생각한다.

 

1. 기존 딕셔너리 값을 변환하여 새로운 딕셔너리 생성

# 기존 dic
dic = {'A': 1 , 'B': 34, 'C':7, 'D':3}

# key 값을 소문자로 변경하여 new dic 생성
new_dic = {k.lower():v for k,v in dic.items()}
----------------------------------------------
출력:{'a': 1, 'b': 34, 'c': 7, 'd': 3}

 

2. 조건을 통한 딕셔너리 필터링

# 기존 dic
dic = {'A': 1 , 'B': 34, 'C':7, 'D':3}

# key 값을 소문자로 변경하여 new dic 생성
new_dic = {k:v for k,v in dic.items() if v > 1}
-----------------------------------------------
출력 : {'B': 34, 'C': 7, 'D': 3}

 

집합 컴프리헨션


집합 컴프리헨션 set 컴프리 헨션 또한 간단하다.

중괄호를 사용해 값을 넣어주면 된다.

nums_set = {i for i in range(1,11)}

 

제너레이터 컴프리헨션


소괄호를 사용하여 지네러이터 컴프리헨션을 생성할수 있다.

nums = (i for i in range(1,11))
print(nums)
<generator object <genexpr> at 0x0000020566322340>
for n in nums:
    print(n)
반응형

댓글