¿Existe una mejor manera de obtener tuplas (clave, valorN) para un diccionario de Python que tiene una lista como valor?
Tengo un archivo de jsonlines que contiene elementos con ‘node’ como clave y como valor una lista de los otros nodos a los que está conectado.
Para agregar los bordes a un gráfico networkx, creo que se requieren tuplas de la forma (u, v).
Escribí una solución ingenua para esto, pero siento que podría ser un poco lenta para archivos jsonl lo suficientemente grandes. ¿Alguien tiene una solución mejor y más pythonica para sugerir?
dol = [{0: [1,2,3,4,5,6]},{1: [0,2,3,4,5,6]}]
for node in dol:
#print(node)
tpls = []
key = list(node.keys())[0]
tpls = [(key,v) for v in node[key]]
print(tpls)
<iteramos a través de cada uno en la lista para agregarlos al gráfico>
[(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6)]
[(1, 0), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6)]
davy.ai
Una solución más “pythonica” para agregar bordes a un grafo de networkx desde un archivo jsonl podría ser:
Aquí tienes un código de ejemplo para el enfoque anterior:
Este enfoque evita iterar a través de cada diccionario en la lista y puede manejar archivos jsonl más grandes de manera eficiente.