Un diccionario en Python es una colección donde cada valor se asigna a una clave. Dado que no están ordenados y no hay restricciones en el tipo de datos de valores y claves almacenados en el diccionario, es complicado leer diccionarios de archivos en Python.
Acercarse
El enunciado del problema menciona una lista de diccionarios que deben leerse de un archivo. Puede haber dos formas de hacer esto:
1. Lectura de un archivo de texto
Podemos leer datos de un archivo de texto como una string y convertir esos datos en un diccionario en Python. Suponiendo que nuestros datos se almacenan en un archivo de texto en el siguiente formato:
{'geek': 10, 'geeky': True} {'GeeksforGeeks': 'Education', 'geekgod': 101.0, 3: 'gfg'} {'supergeek': 5}
El enfoque incluiría los siguientes pasos:
- Abra el archivo de texto en modo de lectura y lea el contenido.
- Analice cada línea del contenido en un diccionario.
2. Lectura usando el Módulo Pickle
El módulo pickle en Python se usa principalmente en campos como la ciencia de datos, donde la persistencia de los datos es crítica. El módulo pickle almacena los datos dados como una secuencia de bytes serializados en archivos que se pueden recuperar fácilmente en un momento posterior. El módulo Pickle admite varios objetos de Python y los diccionarios son uno de ellos. Este método incluiría los siguientes pasos:
- Importando el módulo pickle
- Abrir el archivo en modo binario de lectura
- Cargando los datos en una variable usando el método de volcado del módulo pickle
list_dictionary = pickle.load(filehandler)
A continuación se muestran los ejemplos de los enfoques discutidos anteriormente.
1. Lectura del archivo de texto:
Fichero de entrada:
Python3
def parse(d): dictionary = dict() # Removes curly braces and splits the pairs into a list pairs = d.strip('{}').split(', ') for i in pairs: pair = i.split(': ') # Other symbols from the key-value pair should be stripped. dictionary[pair[0].strip('\'\'\"\"')] = pair[1].strip('\'\'\"\"') return dictionary try: geeky_file = open('geeky_file.txt', 'rt') lines = geeky_file.read().split('\n') for l in lines: if l != '': dictionary = parse(l) print(dictionary) geeky_file.close() except: print("Something unexpected occurred!")
Producción:
{'geek': '10', 'geeky': 'True'} {'GeeksforGeeks': 'Education', 'geekgod': '101.0', '3': 'gfg'} {'supergeek': '5'}
2. Lectura usando Pickle
Python3
import pickle try: geeky_file = open('GFG.txt', 'r') dictionary_list = pickle.load(geeky_file) for d in dictionary_list: print(d) geeky_file.close() except: print("Something unexpected occurred!")
Producción: