Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 딕셔너리 리스트의 모든 조합 구하기

딕셔너리 리스트의 모든 조합을 출력해야 하는 경우, 간단한 리스트 컴프리헨션(list comprehension)과 함께 zip 메서드, 그리고 itertools 모듈의 product 메서드를 활용하면 됩니다.

아래 예제를 통해 실제 동작 방식을 살펴보겠습니다.

예제 코드

from itertools import product

my_list_1 = ["python", "is", "fun"]
my_list_2 = [24, 15]

print("첫 번째 리스트 :")
print(my_list_1)
print("두 번째 리스트 :")
print(my_list_2)

temp = product(my_list_2, repeat = len(my_list_1))

my_result = [{key : value for (key , value) in zip(my_list_1, element)} for element in temp]

print("결과 :");
print(my_result)

실행 결과

첫 번째 리스트 :
['python', 'is', 'fun']
두 번째 리스트 :
[24, 15]
결과 :
[{'python': 24, 'is': 24, 'fun': 24}, {'python': 24, 'is': 24, 'fun': 15}, {'python': 24, 'is': 15, 'fun': 24}, {'python': 24, 'is': 15, 'fun': 15}, {'python': 15, 'is': 24, 'fun': 24}, {'python': 15, 'is': 24, 'fun': 15}, {'python': 15, 'is': 15, 'fun': 24}, {'python': 15, 'is': 15, 'fun': 15}]

코드 설명

  • 필요한 패키지(itertools)를 환경에 임포트합니다.

  • 두 개의 리스트를 정의하고 콘솔에 출력합니다.

  • product 메서드를 사용해 두 번째 리스트 값들의 데카르트 곱(cartesian product)을 계산합니다. 이때 repeat 인자에 첫 번째 리스트의 길이를 지정하여, 키 개수만큼 값을 조합할 수 있도록 합니다.

  • 계산된 결과는 변수에 할당됩니다.

  • 리스트 컴프리헨션을 통해 결과를 순회하면서, 첫 번째 리스트의 요소(키)와 앞서 정의한 변수의 요소(값)를 zip으로 묶어 딕셔너리를 생성합니다.

  • 생성된 딕셔너리들의 목록은 변수에 저장되며, 최종적으로 콘솔에 출력됩니다.

핵심 포인트

  • itertools.product는 반복 가능한 객체들의 데카르트 곱을 생성하는 강력한 도구입니다.

  • zip 함수는 두 리스트를 키-값 쌍으로 묶는 역할을 하여 딕셔너리 생성에 활용됩니다.

  • 이 조합 기법은 키 목록과 값 목록이 주어졌을 때 가능한 모든 딕셔너리 변형을 만들어야 하는 상황에서 유용하게 사용됩니다.