Interconversiile tipurilor de date au fost discutate de multe ori și au fost o problemă destul de populară de rezolvat. Acest articol discută încă o problemă de interconversie a dicționarului, în format șir într-un dicționar. Să discutăm anumite moduri în care se poate face acest lucru.
Convertiți dicționar cu șiruri în dicționar folosind json.loads()
Această sarcină poate fi efectuată cu ușurință utilizând funcția încorporată a multor biblioteci json din python care convertește șirul dicționarului valid în formă json, dicționar în Python.
Abordare pas cu pas:
- Importă „ json ‘modul.
- Inițializați o variabilă șir „test_string” cu un dicționar în format șir.
- Imprimați șirul original folosind funcția „print()” și concatenând-o cu variabila „test_string” convertită într-un șir folosind funcția „str()”.
- Utilizați funcția „json.loads()” pentru a converti șirul de dicționar într-un obiect dicționar și a-l atribui variabilei „res”.
- Imprimați dicționarul convertit folosind funcția „print()” și concatenând-o cu variabila „res” convertită într-un șir folosind funcția „str()”.
Python3
ce luni sunt q1
# 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))> |
>
>Ieșire:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>
Complexitatea timpului: O(1) deoarece este un singur apel de funcție la json.loads care ia un șir ca intrare și returnează un dicționar.
Spatiu auxiliar: O(n), unde n este lungimea șirului de intrare. Acest lucru se datorează faptului că dicționarul returnat ocupă spațiu proporțional cu lungimea șirului de intrare.
Folosind ast.literal_eval() pentru a converti șiruri de dicționar în dicționar
Metoda de mai sus poate fi folosită și pentru a efectua o conversie similară. Funcție mai sigură decât funcția eval și poate fi folosită și pentru interconversia tuturor tipurilor de date, altele decât dicționarul.
pași:
- Programul importă modulul ast.
- Programul inițializează o variabilă șir test_string cu o reprezentare șir a unui dicționar: {Nikhil : 1, Akshat : 2, Akash : 3}.
- Programul imprimă șirul original folosind funcția print() și funcția str() pentru a converti variabila test_string într-un șir: print(Șirul original: + str(test_string)).
- Programul folosește funcția ast.literal_eval() pentru a converti reprezentarea în șir a dicționarului într-un dicționar Python: res = ast.literal_eval(test_string).
- Programul imprimă dicționarul rezultat folosind funcția print() și funcția str() pentru a converti variabila res într-un șir: print(Dicționarul convertit: + 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))> |
>
hărți dactilografiate
>Ieșire:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>
Complexitatea timpului: O(n) unde n este numărul de caractere din șirul dicționarului.
Spatiu auxiliar: O(n) unde n este numărul de elemente din șirul dicționarului.
Convertiți șiruri de dicționar în dicționar folosind eval()
Metoda de mai sus poate fi folosită și pentru a efectua o conversie similară. Funcția eval() analizează argumentul transmis și îl convertește într-o expresie python și rulează expresia python.
Piton
# 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))> |
>
>
Ieșire:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>
Complexitatea timpului: O(1)
Spațiu auxiliar: O(1)
Conversia String Dictionary în dicționar Folosind metoda split() și înțelegerea dicționarului
În primul rând, scoatem bretelele din șir folosind metoda strip(). Apoi, împărțim șirul într-o listă de perechi cheie-valoare folosind metoda split(). În cele din urmă, folosim înțelegerea dicționarului pentru a itera perechile, le împărțim în șiruri de chei și valori separate și convertim valorile în numere întregi înainte de a le adăuga în dicționar. Dicționarul rezultat este returnat.
Python3
rupe 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}> |
>
>Ieșire
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>
Complexitatea timpului: O(n), unde n este numărul de perechi cheie-valoare din dicționar.
Spatiu auxiliar: Pe)
Convertiți șiruri de dicționar în dicționar Folosind funcția eval() împreună cu o funcție înlocuire().
- Inițializați un șir care conține dicționarul în format șir.
- Folosește a inlocui() funcție pentru a înlocui toate ghilimele simple (‘) din șir cu ghilimele duble ().
- Folosește eval() funcție pentru a evalua șirul rezultat ca o expresie Python, care va fi un obiect dicționar.
- Atribuiți dicționarul rezultat unei 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))> |
>
>Ieșire
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>
Complexitatea timpului: O(n), unde n este lungimea șirului de intrare. Acest lucru se datorează faptului că funcția înlocuire() are o complexitate de timp de O(n).
Spatiu auxiliar: O(n), unde n este lungimea șirului de intrare.