초보 개발자

20강 enumerate와 문자열 비교 본문

Python/윤성우 열혈 파이썬

20강 enumerate와 문자열 비교

taehyeki 2022. 1. 17. 18:11

[문자열 비교]

 

리스트에 담긴 학생의 이름을 가나다순으로 정렬하고 1부터 시작해서 번호를 매긴다.

그리고 그 정보를 딕셔너리에 담는데 번호가 키이고 이름이 값이 되도록한다. 

이러한 코드를 작성한다면

 

문자열 비교 방법

'A' < 'Z' # 알파벳 순서상 뒤로 갈수록 크다.
True

'AA' < 'AZ' # 첫 번째 문자가 같다면 두 번째 문자를 비교한다.
True

'AA' < 'AAA' #비교하는 문자들이 모두 같다면 하나라도 긴 문자열이 크다.
True

'A' < 'a' # 소문자가 대문자보다 크다.
True

 

한글도 마찬가지이다.

'가' < '나' #가나다순으로 뒤로 갈수록 크다.
'가' < '구' #아야어여오요우유으이 순으로 뒤로갈수록 크다.
'가가' < '가나' # 첫 번째 문자가 같다면 두 번째 문자를 비교한다.
'하하' < '하하하' # 비교하는 문자들이 모두 같다면 하나라도 긴 문자열이 크다.

 

다시 본래의 주제로 돌아오자

name.sort() 
names
['김현주','박선주','윤나은','이지선','장현지']

 

전에 배운 sort매소드를 통해서 정렬을 해주었다. 여기서 딕셔너리에 번호를 넣어주려면

for 문으로 하나씩 넣어주어야 하는데 이를 enumerate를 사용하면 훨씬 간편하게 가능하다.

 

enumerate함수는 enumerate 객체라는 iterator 객체를 생성한다. 

 

names = ['김현주','박선주','윤나은','이지선','장현지']
eo - enumerate(names) #iterator 객체인 enumerate 객체를 반환한다.
for n in eo: #eo에 담긴 것은 iterator 객체이므로 for 루프에 올 수 있음
	print(n)
    
(0, '김현주')
(1, '박선주')
(2, '윤나은')
(3, '이지선')
(4, '장현지')

만약 eo = enumerate(names,10)이라고 했다면 아래와 같이 출력이 됨
(10, '김현주')
(11, '박선주')
(12, '윤나은')
(13, '이지선')
(14, '장현지')

 

이제 처음 해보려했던 걸 딕셔너리 컴프리 헨션을 통해 구현해보자

dnames = {k : v for k, v in enumerate(sorted(names), 1)}

dnames
{1:'김현주',2:'박선주',3:'윤나은',4:'이지선',5:'장현지'}