Giả sử chúng ta có một từ điển python có các danh sách vì nó có giá trị trong các cặp giá trị khóa. Chúng tôi cần tạo một danh sách sẽ đại diện cho tất cả các kết hợp có thể có của các khóa và giá trị từ các danh sách đã cho.
Với sản phẩm và được sắp xếp
Hàm sản phẩm từ itertools có thể được sử dụng để tạo sản phẩm crtesian của có thể lặp được cung cấp cho nó dưới dạng tham số. Chúng tôi sắp xếp từ điển và sử dụng hai vòng lặp for để tạo sự kết hợp của tất cả các cặp giá trị khóa có thể có từ danh sách trong từ điển.
Ví dụ
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)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
[{'Day': 'Tue', 'Time': '2pm'}, {'Day': 'Tue', 'Time': '9am'}, {'Day': 'Wed', 'Time': '2pm'}, {'Day': 'Wed', 'Time': '9am'}]
Với zip
Trong cách tiếp cận này, chúng tôi sử dụng hàm zip cùng với hàm sản phẩm itertools để tạo sự kết hợp của tất cả các khóa và giá trị có thể tạo thành từ điển danh sách.
Ví dụ
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)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
[[{'Day': 'Tue'}, {'Time': '2pm'}], [{'Day': 'Tue'}, {'Time': '9am'}], [{'Day': 'Wed'}, {'Time': '2pm'}], [{'Day': 'Wed'}, {'Time': '9am'}]]