파이썬 배우기

[파이썬] zip 함수로 리스트 짝지어주기

차근차근 디지털 2023. 11. 16. 15:14

for문을 활용하여 과목 리스트와 점수 리스트를 합쳐서 하나의 과목별 점수 dict을 만들어보려고 합니다.

정말 다양한 방법이 있겠지만 기본적인 방법과 zip 함수를 활용한 방법 두 가지를 소개해보겠습니다.

(참고로 가장 적은 인자를 갖는 리스트를 기준으로 만들어지고 나머지는 버려지게 됩니다. 합치기 전에 len을 확인해보는 것을 추천합니다!)

 

1. 아주 기본적인, 정석적인 방법 : for문으로 짝지어서 넣기

subjects = ['국어','수학','영어']
scores = [70,100,90]

dict_score = {}
for idx in range(len(subjects)): #subjects와 scores의 인자 갯수가 같기 때문에 어떤 것을 써도 상관없음
    dict_score[subjects[idx]] = scores[idx]
dict_score
# output : {'국어': 70, '수학': 100, '영어': 90}

 

2. zip 사용하기 - 기본

subjects = ['국어','수학','영어']
scores = [70,100,90]

dict_score = dict(zip(subjects, scores))
dict_score
# output : {'국어': 70, '수학': 100, '영어': 90}

 

(참고) 세 개 이상의 리스트도 짝지어서 하나로 만들 수 있습니다.

subjects = ['국어','수학','영어']
scores = [70,100,90]
grades = ['C','A','B']

lst_score = list(zip(subjects, scores, grades))
lst_score
# output : [('국어', 70, 'C'), ('수학', 100, 'A'), ('영어', 90, 'B')]

 

(참고) zip 사용하기 - 다른 방법 1

subjects = ['국어','수학','영어']
scores = [70,100,90]

dict_score = {}
for subject, score in zip(subjects, scores):
    dict_score[subject] = score
dict_score
# output : {'국어': 70, '수학': 100, '영어': 90}

 

(참고) zip 사용하기 - 다른 방법 2

subjects = ['국어','수학','영어']
scores = [70,100,90]

dict_score = {subject:score for subject, score in zip(subjects, scores)}
dict_score
# output : {'국어': 70, '수학': 100, '영어': 90}