我正在尋找一個函式來聚合具有共同專案的串列。我想到的具體例子是以下案例:
inputs = [['a','b'], ['a','c'], ['b','d'], ['e','f'], ['g','h'], ['i','k'], ['k','l']]
aggregated_output = [['a','b','c','d'],['e','f'],['g','h'],['i','k','l']]
如您所見,共享一個共同專案的所有串列都被捆綁在一起。輸出中串列或串列中的專案的順序無關緊要。
uj5u.com熱心網友回復:
也許蠻力解決方案可以幫助您:
inputs = [['a','b'], ['a','c'], ['b','d'], ['e','f'], ['g','h'], ['i','k'], ['k','l']]
res = []
for arr in inputs:
flaq = False
for r in res:
for a in arr:
if a in r:
r = [a for a in arr if not a in r]
flaq = True
break
if not flaq:
res.append(arr)
print(res)
輸出:
[['a', 'b', 'c', 'd'], ['e', 'f'], ['g', 'h'], ['i', 'k', 'l']]
uj5u.com熱心網友回復:
您可以connected_components從networkx包中使用:
>>> import networkx as nx
>>> edges = [['a', 'b'], ['a', 'c'], ['b', 'd'], ['e', 'f'], ['g', 'h'], ['i', 'k'], ['k', 'l']]
>>> graph = nx.Graph()
>>> graph.add_edges_from(edges)
>>> [list(c) for c in nx.connected_components(graph)]
[['a', 'c', 'd', 'b'], ['f', 'e'], ['h', 'g'], ['k', 'i', 'l']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/490568.html
