Python/45가지 파이썬 기초문법 예제

파이썬 (24) 병렬 처리

monstro 2025. 5. 10. 20:08
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
반응형