딕셔너리 컨프리핸션(Dictionary comprehension)
- Python/기초
- 2024. 12. 14.
반응형
반응형
딕셔너리 컨프리핸션
파이썬은 코드의 간결함이 가장 큰 장점이요. 이전 포스팅에서 컴프리핸션(list comprehension) 작성요령만 써놨는데 이번 포스팅에서는 딕셔너리 컴프리핸션에 대해 더 써볼까 합니다.
기본 문법
딕셔너리 컴프리핸션은 한 줄의 코드로 for문이 딕셔너리 안에서 작동할 수 있게 해주는 문법입니다. 기본적인 문법은 다음과 같습니다.
{키_표현식: 값_표현식 for 요소 in 반복 가능 객체 if 조건식}
- 키_표현식 : 딕셔너리의 키로 사용할 값.
- 값 표현식 : 딕셔너리의 값으로 사용할 값.
- 반복 가능 객체 : 리스트, 튜플, 문자열, 또는 range와 같은 반복 가능한 객체
- 조건식(선택) : 특정 조건을 만족하는 경우에만 요소 포함.
딕셔너리 컴프리핸션의 장점
- 가독성 향상 : 코드가 간결해져 읽기 쉬워집니다.
- 성능 개선 : for 문보다 빠르게 실행되기 때문에 효율적입니다.
- 유연성 : 조건문가 같은 표현식을 지원하기에 복잡한 딕셔너리도 코드 한줄로 생성할 수 있습니다.
기본 딕셔너리 생성 예제
간단한 예제입니다. 1부터 5까지의 제곱 값을 나타내는 딕셔너리를 생성합니다.
sqaures = {x: x^^2 for x in range(1,6)}
print(squares)
출력 :
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
조건식을 포함한 예제
이번에는 짝수인 경우에만 1에서 10까지 제곱 값을 넣는 딕셔너리를 만들겠습니다.
even_squares = {x: x**2 for x in range(1, 11) if x % 2 == 0}
print(even_squares)
출력:
{2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
리스트를 이용한 예제
리스트의 값을 딕셔너리로 가져오는 예제입니다. 실제로도 많이 쓰고 유용합니다.
아래 예제는 가장 하기 쉬운 실수인데요.
for문을 그냥 넣어버리면 key 값은 상관없지만 value 값이 마지막 값만 출력됩니다.
잘못된 예
keys = ["a", "b", "c"]
values = [1, 2, 3]
combined = {k: v for k in keys for v in values}
print(combined)
출력 :
{'a': 3, 'b': 3, 'c': 3}
잘된예 zip 사용
리스트의 순서를 맞추어서 딕셔너리에 넣으려면 zip을 사용해 바인딩한 후 for문을 합니다.
keys = ['a','b','c']
values = [1,2,3]
combined = {k:v for k, v in zip(keys,values)}
print(combined)
출력 :
{'a': 1, 'b': 2, 'c': 3}
마치며
딕셔너리 컴프리핸션에 대해 알아보았는데요. 너무 복잡한 표현식은 오히려 가독성을 떨어뜨릴 수 있고 데이터셋이 너무 크면 메모리를 과도하게 사용할 수 있으니 주의해야 합니다.
함께 보면 좋은 글
'Python > 기초' 카테고리의 다른 글
[파이썬] 헷갈리기 쉬운 이미지 텍스트 추출 라이브러리 pytesseract 설치하기 (4) | 2024.09.01 |
---|---|
csv 모듈을 이용한 딕셔너리 csv로 바로 저장하기 (1) | 2024.06.06 |
[파이썬] 리스트에서 특정 문자열 제거하기 (0) | 2024.06.03 |
파이썬에서의 ~ 연산자 : 비트 반전과 논리 NOT 연산 (0) | 2024.05.30 |
[파이썬] 리스트 같은 원소값 가져오기 (0) | 2024.05.25 |