Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kết hợp giá trị từ từ điển chứa danh sách trong Python

Cho từ điển Python có giá trị là list trong các cặp khóa-giá trị. Cần tạo list biểu diễn tất cả tổ hợp khóa-giá trị từ các list trong từ điển.

Sử dụng sorted và product

Hàm product() từ itertools tạo tích Descartes của các iterable. Sắp xếp từ điển, dùng 2 vòng lặp for tạo tổ hợp tất cả cặp khóa-giá trị từ các list trong dict.

Ví dụ

import itertools as it
Adict = {
    "Day": ["Tue", "Wed"],
    "Time": ["2pm", "9am"],
}
# Sắp xếp Adict
sorted_Adict = sorted(Adict)
# Sử dụng product sau khi sắp xếp
res = [dict(zip(sorted_Adict, prod))
       for prod in it.product(*(Adict[sorted_Adict] for sorted_Adict in sorted_Adict))]
# In kết quả
print(res)

Kết quả

Chạy đoạn mã trên cho kết quả sau:

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

Sử dụng zip

Dùng zip() cùng itertools.product() tạo tổ hợp tất cả khóa-giá trị từ dict of lists.

Ví dụ

import itertools as it
Adict = {
    "Day": ["Tue", "Wed"],
    "Time": ["2pm", "9am"],
}
# Sắp xếp Adict
sorted_Adict = sorted(Adict)
# Sử dụng product sau khi sắp xếp
res = [[{key: value} for (key, value) in zip(Adict, values)]
       for values in it.product(*Adict.values())]
# In kết quả
print(res)

Kết quả

Chạy đoạn mã trên cho kết quả sau:

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