artist=['아이유','씨스타','이승기']
music=['좋은날','러빙유','삭제']
- 그냥 떠오르는거 적었는데 왤케 아재같지
위 가수와 노래로 플레이리스트 melon을 만들어보자.
melon={}
melon['아이유']='좋은날'
melon['씨스타']='러빙유'
melon['이승기']='삭제'
print(melon) # {'아이유': '좋은날', '씨스타': '러빙유', '이승기': '삭제'}
# 딕셔너리 melon 만들기 ( for 문과 zip 활용 )
1 2 3 4 5 6 | artist=['아이유','씨스타','이승기'] music=['좋은날','러빙유','삭제'] melon={} for i, k in zip (artist, music) : melon[i]=k print(melon) |
# 리스트의 모든 요소를 인덱스와 쌍으로 추출하기 ( enumerate )
파이썬 내장함수 enumerate() 는 시퀀스 자료형을 인자로 받아
각 요소를 인덱스와 함께 쌍으로 추출할 수 있는
반복가능한 자료인 enumerate 객체를 리턴한다.
enumerate 객체는 주로 for 문과 함께 사용되고, list()를 이용해서 리스트 객체로 변환할 수 있다.
1 2 3 | friend=['손흥민','민아','신봉선'] result=list(enumerate(friend)) print(result) |
1 2 3 4 | friend=['손흥민','민아','신봉선'] result=list(enumerate(friend)) for i, k in result: print(i,k) |
enumerate가 되면 이처럼 for 문에 i, k를 사용할 수도 있다.
이를 활용하면,
1 2 3 4 | artist=['아이유','아이유','씨스타','이승기','이승기'] music=['좋은날','너의이름','러빙유','삭제','누난내여자니까'] for i, k in enumerate(artist): print(k,music[i]) |
이렇게 출력할 수 있다.
근데 이를 만약
{ '아이유' : ['좋은날','너의이름'], '씨스타' : ['러빙유'], '이승기' : ['삭제','누난내여자니까'] }
이렇게 키에 따른 여러 개의 값을 갖도록 만들고 싶으면
그냥
melon={} 해서 만드는 걸로는 불가능하다.
melon={}
melon['아이유']='좋은날'
melon['아이유']='너의이름'
print(melon) # {'아이유': '너의이름'} --> '좋은 날' 사라져버림
그래서 이럴 때는 defaultdict을 이용해야 한다.
defaultdict은 collections 패키지에 있다.
1 2 3 4 5 6 | melon={} from collections import defaultdict melon=defaultdict(list) melon['아이유'].append('좋은날') melon['아이유'].append('너의이름') print(melon) |
그래서 이렇게 일일이 노가다를 할 수도 있다.
1 2 3 4 5 6 7 8 9 | melon={} from collections import defaultdict melon=defaultdict(list) melon['아이유'].append('좋은날') melon['아이유'].append('너의이름') melon['씨스타'].append('러빙유') melon['이승기'].append('삭제') melon['이승기'].append('누난내여자니까') print(melon) |
그치만 지금까지 배운 걸 활용하면 노가다를 하지 않고도 가능하다.
1 2 3 4 5 6 7 8 | artist=['아이유','아이유','씨스타','이승기','이승기'] music=['좋은날','너의이름','러빙유','삭제','누난내여자니까'] melon={} from collections import defaultdict melon=defaultdict(list) for i, k in enumerate(artist): melon[k].append(music[i]) print(melon) |
결과적으로 enumerate는 for 문으로 두 리스트를 동시에 참조할 때
번호를 강제적으로 생성해줘서 for 문 안에 요소를 넣을 위치를 지정할 수 있게 하는 역할을 해준다
그렇다면 노래들만 보고 싶다면 어떻게 해야할까?
* 딕녀서리의 키들을 확인하는 함수 : .keys()
딕셔너리의 값들을 확인하는 함수 : .values()
이 두 함수를 활용해보자.
1 2 3 4 5 6 7 8 9 10 | artist=['아이유','아이유','씨스타','이승기','이승기'] music=['좋은날','너의이름','러빙유','삭제','누난내여자니까'] melon={} from collections import defaultdict melon=defaultdict(list) for i, k in enumerate(artist): melon[k].append(music[i]) #print(melon) print(melon.keys()) print(melon.values()) |
위처럼 확인할 수는 있지만 원하는 결과값은 아니다.
melon.values() 자체를 for문 안에 넣고 요소를 출력시키자.
1 2 3 4 5 6 7 8 9 10 11 12 | artist=['아이유','아이유','씨스타','이승기','이승기'] music=['좋은날','너의이름','러빙유','삭제','누난내여자니까'] melon={} from collections import defaultdict melon=defaultdict(list) for i, k in enumerate(artist): melon[k].append(music[i]) #print(melon) #print(melon.keys()) #print(melon.values()) for i in melon.values(): print(i) |
하면, 리스트의 형태로 출력된 것을 확인할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | artist=['아이유','아이유','씨스타','이승기','이승기'] music=['좋은날','너의이름','러빙유','삭제','누난내여자니까'] melon={} from collections import defaultdict melon=defaultdict(list) for i, k in enumerate(artist): melon[k].append(music[i]) #print(melon) #print(melon.keys()) #print(melon.values()) for i in melon.values(): for k in i: # ['좋은날','너의이름],['러빙유'],['삭제','누난내여자니까'] print(k) |
마지막으로 한번 더 이렇게 for 문을 한 번 더 돌려주면, 노래 제목만 나오게 할 수 있다!
'나 취준생 > 파이썬' 카테고리의 다른 글
크롤링 입문 - beautiful soup 모듈 (0) | 2020.12.15 |
---|---|
HTML 기초 개념 (0) | 2020.12.15 |
파이썬으로 히스토그램 그래프 그리기 (0) | 2020.12.09 |
리스트 (0) | 2020.12.09 |
파이썬으로 막대 그래프 그리기 (matplotlib.pyplot) (0) | 2020.12.08 |