Tengo valores emparejados en un archivo csv. Ninguno de los valores emparejados es necesariamente único. Me gustaría dividir esta gran lista en conjuntos completos independientes para su posterior análisis.Dividir una tupla de tuplas (o lista de listas) de valores emparejados en conjuntos completos independientes?
Para ilustrar, mi "megalist" es como:
megalist = [['a', 'b'], ['a', 'd'], ['b', 'd'],['b', 'f'], ['r', 's'], ['t', 'r']...]
que es más importante, la salida sería preservar la lista de parejas de valores (es decir, no consolidar los valores). Idealmente, la salida eventualmente resultaría en diferentes archivos csv para análisis individual más adelante. Por ejemplo, este sería megalist:
completeset1 = [['a', 'b'], ['a', 'd'], ['b', 'd'], ['b', 'f']]
completeset2 = [['r', 's'], ['t', 'r']]
...
En un contexto teoría de grafos, estoy tratando de tomar una gráfica gigante de subgrafos mutuamente excluyentes (donde los valores emparejados se vértices conectados) y dividirlas en gráficos independientes que son más manejables Gracias por cualquier entrada!
Editar 1: Esto me puso en un lugar desde el cual puedo avanzar. ¡Gracias de nuevo!
import sys, csv
import networkx as nx
megalist = csv.reader(open('megalistfile.csv'), delimiter = '\t')
G = nx.Graph()
G.add_edges_from(megalist)
subgraphs = nx.connected_components(G)
output_file = open('subgraphs.txt','w')
for subgraph in subgraphs:
output_line = str(G.edges(subgraph)) + '\n'
output_file.write(output_line)
output_file.close()
suena como usted quiere una BFS en contra de ambos elementos en la pareja . –
Esto ha sido respondido previamente aquí: http://stackoverflow.com/a/1348995/1267329 –