Programa de Python para crear un diccionario a partir de una string

Dictionary in python es una estructura de datos muy útil y en muchas ocasiones vemos problemas al convertir una string en un diccionario.
Entonces, analicemos cómo podemos abordar este problema.
Método n.° 1: Usar eval()
Si obtenemos una entrada de string que se parece completamente a un objeto de diccionario (si la string se parece a un diccionario como en python), entonces podemos convertirla fácilmente a diccionario usando
eval() en Python.

# Python3 code to convert 
# a string to a dictionary
  
# Initializing String 
string = "{'A':13, 'B':14, 'C':15}"
  
# eval() convert string to dictionary
Dict = eval(string)
print(Dict)
print(Dict['A'])
print(Dict['C'])
Producción:

{'C': 15, 'B': 14, 'A': 13}
13
15

Método # 2: Uso de expresiones generadoras en Python
Si obtenemos una entrada de string que no se parece completamente a un objeto de diccionario, entonces podemos usar expresiones generadoras para convertirlo en un diccionario.

# Python3 code to convert 
# a string to a dictionary
  
# Initializing String 
string = "A - 13, B - 14, C - 15"
  
# Converting string to dictionary
Dict = dict((x.strip(), y.strip())
             for x, y in (element.split('-') 
             for element in string.split(', ')))
  
print(Dict)
print(Dict['A'])
print(Dict['C'])
Producción:

{'C': '15', 'A': '13', 'B': '14'}
13
15

El código dado arriba no convierte enteros a un tipo int,

si las claves de números enteros están ahí , entonces solo la línea 8 funcionaría

string = "11 - 13, 12 - 14, 13 - 15"
  
Dict = dict((x.strip(), int(y.strip())) 
             for x, y in (element.split('-') 
             for element in string.split(', ')))
  
print(Dict)
Producción:

{'13': 15, '12': 14, '11': 13}

Publicación traducida automáticamente

Artículo escrito por samy_coder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *