Les interconversions de types de données ont été discutées à de nombreuses reprises et constituent un problème très populaire à résoudre. Cet article aborde encore un autre problème d'interconversion du dictionnaire, au format chaîne vers un dictionnaire. Discutons de certaines façons dont cela peut être fait.
Convertir un dictionnaire de chaînes en dictionnaire à l'aide de json.loads()
Cette tâche peut facilement être effectuée en utilisant la fonction intégrée de chargement de la bibliothèque json de python qui convertit la chaîne du dictionnaire valide en forme json, dictionnaire en Python.
Approche étape par étape :
- Importez le ' json 'module.
- Initialisez une variable chaîne 'test_string' avec un dictionnaire au format chaîne.
- Imprimez la chaîne d'origine à l'aide de la fonction 'print()' et en la concaténant avec la variable 'test_string' convertie en chaîne à l'aide de la fonction 'str()'.
- Utilisez la fonction « json.loads() » pour convertir la chaîne du dictionnaire en un objet dictionnaire et l'attribuer à la variable « res ».
- Imprimez le dictionnaire converti à l'aide de la fonction 'print()' et concaténez-le avec la variable 'res' convertie en chaîne à l'aide de la fonction 'str()'.
Python3
pvr complet
# Python3 code to demonstrate> # convert dictionary string to dictionary> # using json.loads()> import> json> # initializing string> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # using json.loads()> # convert dictionary string to dictionary> res>=> json.loads(test_string)> # print result> print>(>'The converted dictionary : '> +> str>(res))> |
>
>Sortir :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexité temporelle : O(1) car il s'agit d'un appel de fonction unique à json.loads qui prend une chaîne en entrée et renvoie un dictionnaire.
Espace auxiliaire : O(n), où n est la longueur de la chaîne d'entrée. En effet, le dictionnaire renvoyé occupe un espace proportionnel à la longueur de la chaîne d'entrée.
Utiliser ast.literal_eval() convertir un dictionnaire de chaînes en dictionnaire
La méthode ci-dessus peut également être utilisée pour effectuer une conversion similaire. Fonction plus sûre que la fonction eval et peut également être utilisée pour l'interconversion de tous les types de données autres que le dictionnaire.
pas :
- Le programme importe le module ast.
- Le programme initialise une variable chaîne test_string avec une représentation sous forme de chaîne d'un dictionnaire : {Nikhil : 1, Akshat : 2, Akash : 3}.
- Le programme imprime la chaîne d'origine en utilisant la fonction print() et la fonction str() pour convertir la variable test_string en chaîne : print(The original string : + str(test_string)).
- Le programme utilise la fonction ast.literal_eval() pour convertir la représentation sous forme de chaîne du dictionnaire en dictionnaire Python : res = ast.literal_eval(test_string).
- Le programme imprime le dictionnaire résultant en utilisant la fonction print() et la fonction str() pour convertir la variable res en chaîne : print(Le dictionnaire converti : + str(res)).
Python3
# Python3 code to demonstrate> # convert dictionary string to dictionary> # using ast.literal_eval()> import> ast> # initializing string> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # using ast.literal_eval()> # convert dictionary string to dictionary> res>=> ast.literal_eval(test_string)> # print result> print>(>'The converted dictionary : '> +> str>(res))> |
>
>Sortir :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexité temporelle : O(n) où n est le nombre de caractères dans la chaîne du dictionnaire.
Espace auxiliaire : O(n) où n est le nombre d'éléments dans la chaîne du dictionnaire.
Convertir un dictionnaire de chaînes en dictionnaire à l'aide de eval()
La méthode ci-dessus peut également être utilisée pour effectuer une conversion similaire. La fonction eval() analyse l'argument passé, le convertit en une expression python et exécute l'expression python.
Python
# Python3 code to demonstrate> # convert dictionary string to dictionary> # using eval()> # initializing string> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # using eval()> # convert dictionary string to dictionary> res>=> eval>(test_string)> # print result> print>(>'The converted dictionary : '> +> str>(res))> |
système opérateur
>
>
Sortir:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexité temporelle : O(1)
Espace auxiliaire : O(1)
Convertir un dictionnaire de chaînes en dictionnaire à l'aide de la méthode split() et d'une compréhension du dictionnaire
Tout d’abord, nous supprimons les accolades de la chaîne à l’aide de la méthode strip(). Ensuite, nous divisons la chaîne en une liste de paires clé-valeur à l’aide de la méthode split(). Enfin, nous utilisons la compréhension du dictionnaire pour parcourir les paires, les diviser en chaînes de clé et de valeur distinctes et convertir les valeurs en entiers avant de les ajouter au dictionnaire. Le dictionnaire résultant est renvoyé.
Python3
exemple de en java
def> str_to_dict(string):> ># remove the curly braces from the string> >string>=> string.strip(>'{}'>)> ># split the string into key-value pairs> >pairs>=> string.split(>', '>)> ># use a dictionary comprehension to create> ># the dictionary, converting the values to> ># integers and removing the quotes from the keys> >return> {key[>1>:>->2>]:>int>(value)>for> key, value>in> (pair.split(>': '>)>for> pair>in> pairs)}> # test the function> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> print>(>'The original string : '> +> str>(test_string))> print>(>'The converted dictionary : '> +> str>(> >str_to_dict(test_string)))># The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}> # The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> |
>
>Sortir
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexité temporelle : O(n), où n est le nombre de paires clé-valeur dans le dictionnaire.
Espace auxiliaire : Sur)
Convertir un dictionnaire de chaînes en dictionnaire à l'aide de la fonction eval() avec une fonction replace()
- Initialisez une chaîne contenant le dictionnaire au format chaîne.
- Utilisez le remplacer() fonction pour remplacer tous les guillemets simples (') dans la chaîne par des guillemets doubles ().
- Utilisez le évaluation() fonction pour évaluer la chaîne résultante en tant qu’expression Python, qui sera un objet dictionnaire.
- Attribuez le dictionnaire résultant à une variable.
Python3
# Python3 code to demonstrate> # convert dictionary string to dictionary> # using eval() and replace()> # initializing string> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # using eval() and replace()> # convert dictionary string to dictionary> res>=> eval>(test_string.replace(>'''>,>'''>))> # print result> print>(>'The converted dictionary : '> +> str>(res))> |
>
>Sortir
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexité temporelle : O(n), où n est la longueur de la chaîne d'entrée. En effet, la fonction replace() a une complexité temporelle de O(n).
Espace auxiliaire : O(n), où n est la longueur de la chaîne d'entrée.