파이썬 딕셔너리는 많이 사용하는 자료형 중에 하나이다. 파이썬은 다른 프로그래밍 언어에 비해 문법이 쉽다. 그리고 파이썬만의 독특한 문법들이 있는데, 이를 사용하면 더 쉽고 적게 코딩할 수 있다. 파이썬 컴프리헨션이라는 문법을 이용하면, 딕셔너리도 한 줄의 코딩으로 쉽게 작성할 수 있다. 이전 포스팅에서는 이를 이용하여 for문과 if문을 조합하여 리스트를 쉽게 만드는 방법에 대해서 알아보았다.
( 참조: 파이썬 컴프리헨션 문법, for문과 if문 한 줄로 리스트 코딩하기 )


오늘은 파이썬 컴프리헨션, 딕셔너리(dictionary) 자료형을 for문과 if문까지 한 줄에 작성하는 방법에 대해서 알아보도록 하겠다.

 

 

파이썬 컴프리헨션

 

 

1. for문을 이용한 딕셔너리 한 줄로 작성하기

예를 들어 형태소를 분리하여 저정한 temp라는 리스트가 있다고 가정해보자. temp = ["오늘", "밥", "먹다", "밥"] 이 리스트를 단어별로 index를 붙여 딕셔너리형으로 만들고 싶다면, 아래와 같이 한 줄에 작성할 수 있다.

temp = ["오늘", "밥", "먹다", "밥"]
temp_dict = {idx: word for idx, word in enumerate(temp)}

print(temp_dict)

Out[1]: {0: '오늘', 1: '밥', 2: '먹다', 3: '밥'}

 


enumerate는 인덱스를 생성할 때 사용할 수 있는 함수이다. enumerate함수를 이용하면, for문에서 사용하는 변수에 index가 추가로 생성이 된다. 리스트에서도 사용한 것처럼 앞에서부터 순서대로 읽는 것이 기억하는데 도움이 된다. 'idx가 키,word가 value로 들어가는 딕셔너리를 만들건데, 이 값은 뒤에 반복문(for문)에서 가져와서 만들어'라는 식으로 말이다.

 

위의 작업에서 키와 값을 바꿔보자. 딕셔너리의 키를 단어로 하고, 값을 숫자로 하려면 중복을 제거해줘야 한다. 딕셔너리의 키는 중복이 되지 않기 때문이다.

 

리스트의 중복을 제거하는 방법은, 세트형으로 변환했다가 다시 리스트로 바꾼다. 세트형은 중복을 허용하지 않기 때문에, 변환하는 과정에서 중복이 없어진다. 그 다음 리스트를 작성하듯이 작성하면 된다.

temp = list(set(temp))
temp_dict = {word: idx for idx, word in enumerate(temp)}

print(temp_dict)

Out[2]: {'오늘': 0, '밥': 1, '먹다': 2}

 


딕셔너리는 key값이 필요하므로, key와 value가 둘다 짝이 맞게 작성해야 한다. 예를 들어 temp_dict = {"idx": word for idx,word in enumerate(temp)} 라고 작성하면, 끝에 하나의 값만 idx키에 저장된다. 어떤 결과가 나오는지 궁금하다면 한 번 입력해보길 바란다.
 

 

2. if문과 for문 둘다 적용하기

리스트에서 한 것처럼 if문도 같이 작성할 수 있다. for문 뒤에 if문을 작성하면 된다. else문도 같이 작성하고 싶다면 for문 앞에 작성해야 한다. 이는 리스트 자료형을 한 줄에 작성하는 것과 동일한 순서이다.

temp_dict = {word: idx for idx, word in enumerate(temp) if word!="밥"}
print(temp_dict)

Out[3]: {'오늘': 0, '먹다': 2}

 

이런 식으로 읽으면 기억하기가 좋다. 'word가 키, idx가 value로 이루어진 딕셔너리를 작성할 거야. idx랑 value값은 for문에서 가져오고 word가 밥이 아닌 경우에만 가져와서 만들어.'

 

 

편리

 

 

오늘은 이렇게 파이썬 딕셔너리(dictionary) 자료형을 for문과 if문까지 한 줄에 작성하는 방법에 대해서 알아보았다. 텍스트 분석을 할 때 형태소를 분리하고 단어마다 인덱스를 붙일 때 유용한 구문이다. for문과 if문을 동시에 쓸 생각하면 귀찮은데, 이렇게 작성하면 편리하게 작성할 수 있다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기