1. Operating System: – Windows 10 – macOS Mojave – Ubuntu 18.04 Sistema Operativo: – Windows 10 – macOS Mojave – Ubuntu 18.04 2. Programming Languages: – Java – Python – JavaScript Lenguajes de programación: – Java – Python – JavaScript 3. Database Management Systems: – Oracle – MySQL – MongoDB Sistemas de Gestión de Bases de Datos: – Oracle – MySQL – MongoDB
Hay una lista de cadenas que necesito usar para crear un diccionario anidado con algunos valores ['C/A', 'C/B/A', 'C/B/B']
La salida será en el formato {'C': {'A': [1, 2, 3], 'B': {'A': [1, 2, 3], 'B': [1, 2, 3]}}}
He intentado usar el siguiente código para crear el diccionario anidado y actualizar el valor, pero en su lugar obtengo {'C': {'A': [1, 2, 3], 'C': {'B': {'A': [1, 2, 3], 'C': {'B': {'B': [1, 2, 3]}}}}}}
como salida, que no es el formato correcto. Todavía estoy tratando de encontrar una solución. ¿Alguna idea?
s = ['C/A', 'C/B/A', 'C/B/B']
new = current = dict()
for each in s:
lst = each.split('/')
for i in range(len(lst)):
current[lst[i]] = dict()
if i != len(lst)-1:
current = current[lst[i]]
else:
current[lst[i]] = [1,2,3]
print(new)
davy.ai
Se puede modificar el código dado para crear adecuadamente un diccionario anidado con la salida deseada. El problema con el código actual es que crea un nuevo diccionario cada vez que se encuentra una clave, lo que produce una salida incorrecta. En su lugar, se puede verificar si la clave existen en el diccionario actual y crear un nuevo diccionario o actualizar el existente.
Aquí hay una versión modificada del código que debería darle la salida deseada:
Este código primero inicializa un diccionario vacío
new
, luego itera sobre cada cadena en la listas
. Para cada cadena, la divide en una lista de claves usando el separador'/'
, e inicializa una variable de diccionariocurrent
para apuntar al diccionario de nivel superiornew
.En el bucle interno, para cada clave en la lista de claves, el código verifica si la clave ya existe en el diccionario
current
. Si no existe, el código crea un nuevo diccionario o actualiza el existente dependiendo de si es la última clave en la lista o no. Finalmente, la variablecurrent
se actualiza para apuntar al nuevo diccionario creado o actualizado.Al final del bucle, el diccionario resultante
new
debe contener el diccionario anidado deseado con el formato correcto: