He estado tratando de usar una lista de rutas para implementar un TreeView en un sitio web con componentes Material UI.
Usé el código que se encuentra en el componente TreeView en MUI aquí https://mui.com/material-ui/react-tree-view/#rich-object
Pero solo tengo una lista de rutas como esta:
dirs = ['path/to/file/file1.txt', 'path/to/file/file2.txt', 'path/to/another_file/file3.txt']Y quería llegar a una estructura que se ve así
{'path': {'to': {'files12': ['file1.txt', 'file2.txt']}, 'file3': 'file3.txt'} } }Para usar eso con mi función en React, de alguna manera me puse a trabajar hasta que se rompió en el nodo hoja, porque el diccionario que estaba usando era el creado aquí https://stackoverflow.com/a/58917078/9790150 que lee los nodos hoja para siempre y alcanzó el tamaño máximo de la pila de llamadas.
A continuación se muestra lo mejor que pude hacer que mi función dentro de mi página funcione
const renderTree= (my_dict) => ( <TreeItem key={Object.keys(my_dict)[0]} nodeId={Object.keys(my_dict)[0]} label ={Object.keys(my_dict)[0]}> {Array.isArray(Object.values(my_dict)) ? Object.entries(my_dict).map((node) => renderTree(node)) : null} </TreeItem> );. Nota: La función anterior no está completa. Es justo donde tengo hasta ahora.
Puedo proporcionar más aclaraciones según sea necesario porque todavía no entiendo las cosas por completo.
Así que TL;DR
Necesito una forma de convertir una lista de rutas en el formato de estructura que se encuentra en el ejemplo de TreeView que se ve así:
const data = { id: 'root', name: 'Parent', children: [ { id: '1', name: 'Child - 1', }, { id: '3', name: 'Child - 3', children: [ { id: '4', name: 'Child - 4', }, ], }, ], };Lo cual parece demasiado complicado de hacer en Python o Javascript, ya que lo más probable es que pueda crear una función que funcione con la segunda opción ->
Una forma de convertirlo en un diccionario de diccionarios como se muestra arriba en mi resultado deseado
Agradezco cualquier sugerencia sobre cómo debería crear lo que quiero de una manera más fácil.