Le interconversioni dei tipi di dati sono state discusse molte volte e sono state un problema piuttosto diffuso da risolvere. Questo articolo discute ancora un altro problema di interconversione del dizionario, dal formato stringa a dizionario. Discutiamo alcuni modi in cui ciò può essere fatto.
Converti dizionario di stringhe in dizionario utilizzando json.loads()
Questa attività può essere facilmente eseguita utilizzando la funzione integrata di carichi di libreria json di Python che converte la stringa del dizionario valido in formato json, dizionario in Python.
Approccio passo dopo passo:
- Importa il ' json ‘ modulo.
- Inizializza una variabile stringa 'test_string' con un dizionario in formato stringa.
- Stampa la stringa originale utilizzando la funzione 'print()' e concatenandola con la variabile 'test_string' convertita in una stringa utilizzando la funzione 'str()'.
- Utilizza la funzione 'json.loads()' per convertire la stringa del dizionario in un oggetto dizionario e assegnarlo alla variabile 'res'.
- Stampa il dizionario convertito utilizzando la funzione 'print()' e concatenandolo con la variabile 'res' convertita in una stringa utilizzando la funzione 'str()'.
Python3
come scaricare musica
# 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))> |
>
>Produzione :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complessità temporale: O(1) poiché è una singola chiamata di funzione a json.loads che accetta una stringa come input e restituisce un dizionario.
Spazio ausiliario: O(n), dove n è la lunghezza della stringa di input. Questo perché il dizionario restituito occupa uno spazio proporzionale alla lunghezza della stringa di input.
Utilizzando ast.literal_eval() per convertire il dizionario delle stringhe in dizionario
Il metodo sopra può essere utilizzato anche per eseguire una conversione simile. Funzione più sicura della funzione eval e può essere utilizzata anche per l'interconversione di tutti i tipi di dati diversi dal dizionario.
passaggi:
- Il programma importa il modulo ast.
- Il programma inizializza una variabile stringa test_string con una rappresentazione stringa di un dizionario: {Nikhil: 1, Akshat: 2, Akash: 3}.
- Il programma stampa la stringa originale utilizzando la funzione print() e la funzione str() per convertire la variabile test_string in una stringa: print(The original string : + str(test_string)).
- Il programma utilizza la funzione ast.literal_eval() per convertire la rappresentazione di stringa del dizionario in un dizionario Python: res = ast.literal_eval(test_string).
- Il programma stampa il dizionario risultante utilizzando la funzione print() e la funzione str() per convertire la variabile res in una stringa: print(Il dizionario convertito: + 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))> |
>
>
fcfsProduzione :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complessità temporale: O(n) dove n è il numero di caratteri nella stringa del dizionario.
Spazio ausiliario: O(n) dove n è il numero di elementi nella stringa del dizionario.
Converti dizionario di stringhe in dizionario usando eval()
Il metodo sopra può essere utilizzato anche per eseguire una conversione simile. La funzione eval() analizza l'argomento passato e lo converte in un'espressione Python ed esegue l'espressione Python.
Pitone
# 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))> |
>
>
Produzione:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complessità temporale: O(1)
Spazio ausiliario: O(1)
Converti dizionario di stringhe in dizionario Utilizzando il metodo split() e una comprensione del dizionario
Per prima cosa rimuoviamo le parentesi graffe dalla stringa utilizzando il metodo strip(). Quindi, dividiamo la stringa in un elenco di coppie chiave-valore utilizzando il metodo split(). Infine, utilizziamo la comprensione del dizionario per scorrere le coppie, dividerle in stringhe di chiavi e valori separate e convertire i valori in numeri interi prima di aggiungerli al dizionario. Viene restituito il dizionario risultante.
Python3
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}> |
Java è uguale a
>
>Produzione
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complessità temporale: O(n), dove n è il numero di coppie chiave-valore nel dizionario.
Spazio ausiliario: SU)
Convertire un dizionario di stringhe in dizionario utilizzando la funzione eval() insieme a una funzione replace()
- Inizializza una stringa contenente il dizionario in formato stringa.
- Usa il sostituire() funzione per sostituire tutte le virgolette singole (') nella stringa con virgolette doppie ().
- Usa il valutazione() funzione per valutare la stringa risultante come un'espressione Python, che sarà un oggetto dizionario.
- Assegna il dizionario risultante a una variabile.
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))> |
>
>Produzione
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Complessità temporale: O(n), dove n è la lunghezza della stringa di input. Questo perché la funzione replace() ha una complessità temporale pari a O(n).
Spazio ausiliario: O(n), dove n è la lunghezza della stringa di input.