在 Python 中组合列表中的字典值

pythonserver side programmingprogramming更新于 2026/1/13 4:28:17

假设我们有一个 Python 字典,其中的键值对值为列表。我们需要创建一个列表,该列表将表示给定列表中键和值的所有可能组合。

使用 sorted 和 product

itertools 中的 product 函数可用于创建作为参数提供给它的可迭代对象的 crtesian 乘积。我们对字典进行排序并使用两个 for 循环来创建字典中列表中所有可能的键值对的组合。

示例

import itertools as it
Adict = {
   "Day": ["Tue", "Wed"],
   "Time": ["2pm", "9am"],
}
# 排序 Adict
sorted_Adict = sorted(Adict)
# 排序后使用乘积
res = [dict(zip(sorted_Adict, prod))
   for prod in it.product(*(Adict[sorted_Adict]
      for sorted_Adict in sorted_Adict))]
# 打印输出
print(res)

输出

运行上述代码得到以下结果 −

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

使用 zip

在此方法中,我们使用 zip 函数以及 itertools 产品函数来创建列表字典中所有可能的键和值的组合。

示例

import itertools as it
Adict = {
   "Day": ["Tue", "Wed"],
   "Time": ["2pm", "9am"],
}
# 对 Adict 进行排序
sorted_Adict = sorted(Adict)
# 排序后使用产品
res = [[{key: value} for (key, value) in zip(Adict, values)]
   for values in it.product(*Adict.values())]
# 打印输出
print(res)

输出

运行上述代码得到以下结果 −

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

相关文章


有用资源