728x90
반응형
이번에는 여러 개의 리스트의 요소를 하나의 딕셔너리로 변환하는 여러 방법에 대해 알아본다
예제는 다음과 같다
a = ["one", "two", "three", "four"]
b = [30, 20, 15, 75]
c = [5.2, 7.4, 3.6, 4.2]
a 리스트의 데이터들을 key로,
b 리스트와 c 리스트의 데이터들을 곱한 값을 value로 하는 딕셔너리를 완성해야 한다
{'one': 156.0, 'two': 148.0, 'three': 54.0, 'four': 315.0}
최종 결과는 위와 같이 출력되야 한다
1) enumerate 메서드를 통한 리스트의 인덱스 접근
def makeDict(list1, list2, list3):
dic = {}
for idx, val in enumerate(list1):
dic[val] = list2[idx] * list3[idx]
return dic
enumerate 메서드를 사용하면 리스트의 데이터 외에도 인덱스에도 접근이 가능하다
따라서 위와 같이 함수 makeDict를 만들고
인자로 받은 첫번째 리스트의 데이터를 Key로,
인자로 받은 두번째 리스트와 세번째 리스트에는 첫번째 리스트의 인덱스로 접근하여 곱한 값을 Value로 설정한다
2) zip 메서드를 통한 여러개의 시퀀스 자료형을 묶어서 사용
def makeDict2(list1, list2, list3):
dic = {}
for one, two, three in zip(list1, list2, list3):
dic[one] = two * three
return dic
zip 메서드를 통해 여러개의 시퀀스 자료형을 묶어서 사용할 수 있다
따라서 묶어진 list1 / list2 / list3를 순회하면서 딕셔너리에 등록한다
3) 딕셔너리 컴프리헨션 (1)
def makeDict3(list1, list2, list3):
return {key : val1 * val2 for key, val1, val2 in zip(list1, list2, list3)}
딕셔너리 컴프리헨션을 사용하여 구현하였다
zip 메서드로 묶은 세 개의 배열을 순회하면서
키 : 밸류 for 가져온데이터 in 순회대상
의 구조로 딕셔너리 컴프리헨션을 구성하였다
4) 딕셔너리 컴프리헨션 (2)
def makeDict4(list1, list2, list3):
return dict((key, val1 * val2) for key, val1, val2 in zip(list1, list2, list3))
딕셔너리 컴프리헨션이 아닌, 리스트 컴프리헨션의 결과값을 dict 메서드로 감싸 딕셔너리화하여 처리한다
마찬가지로 zip 메서드로 세 개의 배열을 묶어서 사용하는데,
dict((키, 밸류) for 가져온데이터 in 순회대상)
의 구조로 코드를 구성하였다
최종 결과는 다음과 같다
print(makeDict(a, b, c))
print(makeDict2(a, b, c))
print(makeDict3(a, b, c))
print(makeDict4(a, b, c))

728x90
반응형
'Python > 45가지 파이썬 기초문법 예제' 카테고리의 다른 글
| 파이썬 (26) 파일 쓰기 (0) | 2025.05.13 |
|---|---|
| 파이썬 (25) 리스트 스플릿 (0) | 2025.05.11 |
| 파이썬 (23) 알파벳 쓰기 (0) | 2025.05.10 |
| 파이썬 (22) 문자열 파싱2 (0) | 2025.05.10 |
| 파이썬 (21) 문자열 파싱1 (0) | 2025.05.08 |