2 usuarios conectados
listas de diccionarios

Convertir csv a listas de diccionarios. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada csv_a_lista_de_diccionarios que tome una cadena de texto con formato CSV simple (la primera línea son los encabezados, las siguientes son los datos separados por comas) y devuelva una listas de diccionarios, donde las claves de cada diccionario son los encabezados y los valores son los datos correspondientes de cada fila.

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Convertir csv a listas de diccionarios

📋 Copiar código



import csv
import io

def csv_a_lista_de_diccionarios(csv_string):
  """
  Convierte una cadena de texto con formato CSV simple a una listas de diccionarios.

  Args:
    csv_string: La cadena de texto con formato CSV.

  Returns:
    Una listas de diccionarios, donde cada diccionario representa una fila del CSV.
    Devuelve una lista vacía si la cadena CSV está vacía o solo contiene encabezados.
  """
  f = io.StringIO(csv_string)
  reader = csv.DictReader(f)
  return list(reader)

# Ejemplos de uso
csv_data1 = """nombre,edad,ciudad
Juan,30,Madrid
Ana,25,Barcelona
Carlos,35,Valencia
"""
resultado1 = csv_a_lista_de_diccionarios(csv_data1)
print(f"Datos CSV:\n{csv_data1}\nConvertidos a:\n{resultado1}")

csv_data2 = """nombre,profesion
Laura,abogada
Pedro,médico
"""
resultado2 = csv_a_lista_de_diccionarios(csv_data2)
print(f"\nDatos CSV:\n{csv_data2}\nConvertidos a:\n{resultado2}")

csv_data3 = """nombre,valor"""
resultado3 = csv_a_lista_de_diccionarios(csv_data3)
print(f"\nDatos CSV:\n{csv_data3}\nConvertidos a:\n{resultado3}")

csv_data4 = ""
resultado4 = csv_a_lista_de_diccionarios(csv_data4)
print(f"\nDatos CSV:\n{csv_data4}\nConvertidos a:\n{resultado4}")

csv_data5 = """col1,col2
dato1,dato2"""
resultado5 = csv_a_lista_de_diccionarios(csv_data5)
print(f"\nDatos CSV:\n{csv_data5}\nConvertidos a:\n{resultado5}")

Explicación del Código:

  1. import csv:

    • Importa el módulo csv, que proporciona funcionalidades para trabajar con archivos CSV (y cadenas con formato CSV).
  2. import io:

    • Importa el módulo io, que se utiliza aquí para tratar la cadena CSV como un archivo.
  3. def csv_a_lista_de_diccionarios(csv_string)::

    • Define una función llamada csv_a_lista_de_diccionarios que toma una cadena de texto (csv_string) con formato CSV como entrada.
  4. f = io.StringIO(csv_string):

    • Crea un objeto StringIO a partir de la cadena CSV. Esto permite que el módulo csv trate la cadena como si fuera un archivo abierto en modo lectura.
  5. reader = csv.DictReader(f):

    • Crea un objeto DictReader del módulo csv. DictReader lee las filas del CSV y las convierte en diccionarios. Utiliza la primera fila del CSV como los encabezados (las claves de los diccionarios).
  6. return list(reader):

    • Convierte el iterador reader en una listas de diccionarios. Cada diccionario en la lista representa una fila del CSV, con las claves tomadas de la primera fila (encabezados) y los valores de las celdas correspondientes.

Ejemplos de Uso:

Los ejemplos muestran cómo la función convierte diferentes cadenas con formato CSV en listas de diccionarios. La primera fila se utiliza como los nombres de las claves. Si la cadena CSV está vacía o solo contiene los encabezados, la función devuelve una lista vacía.

.