Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 목록 사전의 값 결합

<시간/>

키 값 쌍의 값으로 목록이 있는 파이썬 사전이 있다고 가정해 보겠습니다. 주어진 목록에서 키와 값의 가능한 모든 조합을 나타내는 목록을 만들어야 합니다.

소트 및 제품 포함

itertools의 product 함수는 매개변수로 제공된 iterable의 crtesian 곱을 만드는 데 사용할 수 있습니다. 사전을 정렬하고 두 개의 for 루프를 사용하여 사전의 목록에서 가능한 모든 키 값 쌍의 조합을 만듭니다.

예시

import itertools as it
Adict = {
   "Day": ["Tue", "Wed"],
   "Time": ["2pm", "9am"],
}
# Sorting Adict
sorted_Adict = sorted(Adict)
# Using product after sorting
res = [dict(zip(sorted_Adict, prod))
   for prod in it.product(*(Adict[sorted_Adict]
      for sorted_Adict in sorted_Adict))]
# Printing output
print(res)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

[{'Day': 'Tue', 'Time': '2pm'}, {'Day': 'Tue', 'Time': '9am'}, {'Day': 'Wed', 'Time': '2pm'}, {'Day': 'Wed', 'Time': '9am'}]

지퍼 포함

이 접근 방식에서 우리는 itertools 제품 함수와 함께 zip 함수를 사용하여 목록 사전을 구성하는 가능한 모든 키와 값의 조합을 만듭니다.

예시

import itertools as it
Adict = {
   "Day": ["Tue", "Wed"],
   "Time": ["2pm", "9am"],
}
# Sorting Adict
sorted_Adict = sorted(Adict)
# Using product after sorting
res = [[{key: value} for (key, value) in zip(Adict, values)]
   for values in it.product(*Adict.values())]
# Printing output
print(res)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

[[{'Day': 'Tue'}, {'Time': '2pm'}], [{'Day': 'Tue'}, {'Time': '9am'}], [{'Day': 'Wed'}, {'Time': '2pm'}], [{'Day': 'Wed'}, {'Time': '9am'}]]