gpt4 book ai didi

python - 有没有办法获得字典中或列表中值之间重叠的所有组合

转载 作者:行者123 更新时间:2023-12-02 15:59:12 24 4
gpt4 key购买 nike

我有几个 list

A =['D','KIT','SAP'],
B= ['F','G','LUFT','SAP'],
C= ['I','SAP'],
D= ['SAP','LUF','KIT'],
F= ['SAP','LUF','KIT','HASS']

我将它们组合传递给字典。例如,我将列表 A 和 B 作为键“AB”加入到我的新字典中,并将两个列表中的值(如值列表)附加到该键“AB”。

my_dict={"AB":[['D','KIT','SAP'],['F','G','LUFT','SAP']]}

我的目标是在多个组合中获得列表之间的重叠。为此,我可以使用下面的衬垫。

   for k,v in my_dict.items():
print(k,list(set.intersection(*[set(x) for x in v])))

AB ['SAP']

但是,这里的问题是当我有更多的列表和更多的组合时,手动定义一个包含所有可能组合的字典是很乏味的。

目的是实现所有可能的列表组合。从上述示例中,我有以下列表组合。在这种情况下,这将是 5*5 +1 = 26 种组合。 最后,我想获得以下每个组合的重叠。

   AB, AC, AD, AF
ABC, ABD, ABF
ABCD, ABCDF
ABCDF
BC, BD, BF
DF, DC
FC

问题是我如何以 Pythonic 方式实现它。非常感谢任何建议。

作为旁注,如果列表本身可以实现这种重叠组合,我不希望在两者之间使用字典。

谢谢

最佳答案

看看 itertools.combinations。它返回给定迭代的给定长度的所有可能组合。您必须遍历所有可能的长度。

import itertools

lists = [A, B, C, D, E, F]

combinations = []

for l in range(2, len(lists) + 1):
combinations += itertools.combinations(lists, l)

combinations 将是一个元组列表,其中包含至少两个列表的所有可能组合。

关于python - 有没有办法获得字典中或列表中值之间重叠的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71065266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com