假设我有一个如下所示的嵌套列表:
nested_list = [[a,b,1],[c,d,3],[a,f,8],[a,c,5]]
现在我希望获得列表中第二项之间的所有可能组合,但前提是两个列表中的第一项相等。那么应该打印的内容如下:
Combinations for 'a' as first item in the lists: [b,f], [b,c], [f,c]
我想出了这个:
comprehension = [x[0] for x in nested_list if x[1] in nested_list]
但这不起作用(当然)。我不确定如何遍历所有列表以找到组合。
答案 0 :(得分:0)
您可以使用collectoins.defaultdict
和combinations
:
In [2]: nested_list = [['a','b',1],['c','d',3],['a','f',8],['a','c',5]]
In [3]: from collections import defaultdict
In [4]: from itertools import combinations
In [5]: d = defaultdict(list)
In [6]: for i, j, _ in nested_list:
...: d[i].append(j)
...:
In [7]: {k: list(combinations(v, 2)) for k, v in d.items()}
Out[7]: {'a': [('b', 'f'), ('b', 'c'), ('f', 'c')], 'c': []}