Les interconversions de tipus de dades s'han parlat moltes vegades i han estat un problema força popular per resoldre. Aquest article tracta un altre problema d'interconversió del diccionari, en format de cadena a un diccionari. Parlem de certes maneres de fer-ho.
Converteix el diccionari de cadenes en diccionari amb json.loads()
Aquesta tasca es pot realitzar fàcilment utilitzant la funció integrada d'un munt de biblioteca json de Python que converteix la cadena de diccionari vàlid en forma json, diccionari en Python.
Enfocament pas a pas:
- Importa el ' json ‘mòdul.
- Inicialitzeu una variable de cadena 'test_string' amb un diccionari en format de cadena.
- Imprimiu la cadena original utilitzant la funció 'print()' i concatenant-la amb la variable 'test_string' convertida en una cadena mitjançant la funció 'str()'.
- Utilitzeu la funció 'json.loads()' per convertir la cadena de diccionari en un objecte de diccionari i assignar-la a la variable 'res'.
- Imprimiu el diccionari convertit utilitzant la funció 'print()' i concatenant-lo amb la variable 'res' convertida en una cadena mitjançant la funció 'str()'.
Python 3
es5 vs es6
# 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))> |
>
>Sortida:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexitat temporal: O(1) ja que és una única crida de funció a json.loads que pren una cadena com a entrada i retorna un diccionari.
Espai auxiliar: O(n), on n és la longitud de la cadena d'entrada. Això es deu al fet que el diccionari retornat ocupa un espai proporcional a la longitud de la cadena d'entrada.
Utilitzant ast.literal_eval() per convertir el diccionari de cadenes en diccionari
El mètode anterior també es pot utilitzar per realitzar una conversió similar. Funció més segura que la funció eval i també es pot utilitzar per a la interconversió de tots els tipus de dades que no siguin el diccionari.
passos:
- El programa importa el mòdul ast.
- El programa inicialitza una variable de cadena test_string amb una representació de cadena d'un diccionari: {Nikhil : 1, Akshat : 2, Akash : 3}.
- El programa imprimeix la cadena original utilitzant la funció print() i la funció str() per convertir la variable test_string en una cadena: print(La cadena original: + str(test_string)).
- El programa utilitza la funció ast.literal_eval() per convertir la representació de cadena del diccionari en un diccionari de Python: res = ast.literal_eval(test_string).
- El programa imprimeix el diccionari resultant utilitzant la funció print() i la funció str() per convertir la variable res en una cadena: print(El diccionari convertit: + str(res)).
Python 3
# 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))> |
>
>Sortida:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexitat temporal: O(n) on n és el nombre de caràcters de la cadena de diccionari.
Espai auxiliar: O(n) on n és el nombre d'elements de la cadena de diccionari.
Converteix el diccionari de cadena en diccionari mitjançant eval()
El mètode anterior també es pot utilitzar per realitzar una conversió similar. La funció eval() analitza l'argument passat i el converteix en una expressió Python i executa l'expressió Python.
Python
hashset vs hashmap
# 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))> |
>
>
Sortida:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexitat temporal: O(1)
Espai auxiliar: O(1)
Converteix String Dictionary en diccionari mitjançant el mètode split() i una comprensió de diccionari
Primer, eliminem les claus de la corda mitjançant el mètode strip(). A continuació, dividim la cadena en una llista de parells clau-valor mitjançant el mètode split(). Finalment, utilitzem la comprensió del diccionari per iterar sobre els parells, dividir-los en cadenes de clau i valor separades i convertir els valors en nombres enters abans d'afegir-los al diccionari. Es retorna el diccionari resultant.
Python 3
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}> |
>
>Sortida
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexitat temporal: O(n), on n és el nombre de parells clau-valor al diccionari.
Espai auxiliar: O(n)
Converteix String Dictionary en diccionari Utilitzant la funció eval() juntament amb una funció replace().
- Inicialitzar una cadena que contingui el diccionari en format de cadena.
- Utilitzar el substituir () funció per substituir totes les cometes simples (‘) de la cadena per cometes dobles ().
- Utilitzar el eval() funció per avaluar la cadena resultant com una expressió de Python, que serà un objecte de diccionari.
- Assigna el diccionari resultant a una variable.
Python 3
# 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))> |
radix sort
>
>Sortida
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complexitat temporal: O(n), on n és la longitud de la cadena d'entrada. Això és degut a que la funció substituir() té una complexitat temporal de O(n).
Espai auxiliar: O(n), on n és la longitud de la cadena d'entrada.