我正在尝试弄清楚如何根据一个元素获得列表的组合。
让我们假设我有一个列表列表
[["blue", 1], ["blue", 3], ["red", 6], ["green", 5]]
如何在python中获得这些组合:
[["blue", 1], ["red", 6], ["green", 5]], [["blue", 3], ["red", 6], ["green", 5]]
发布于 2018-07-06 06:58:44
data = [["blue", 1], ["blue", 3], ["red", 6], ["green", 5]]
groups = []
for k, g in itertools.groupby(data, key=lambda item: item[0]):
groups.append(list(g))
print(list(itertools.product(*groups)))
# [(['blue', 1], ['red', 6], ['green', 5]), (['blue', 3], ['red', 6], ['green', 5])]
# just for understanding how it works:
print(groups)
# [[['blue', 1], ['blue', 3]], [['red', 6]], [['green', 5]]]
https://stackoverflow.com/questions/51200849
复制相似问题