logo

Convertiți String Dictionary în dicționar Python

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:

  1. Importă „ json ‘modul.
  2. Inițializați o variabilă șir „test_string” cu un dicționar în format șir.
  3. Imprimați șirul original folosind funcția „print()” și concatenând-o cu variabila „test_string” convertită într-un șir folosind funcția „str()”.
  4. Utilizați funcția „json.loads()” pentru a converti șirul de dicționar într-un obiect dicționar și a-l atribui variabilei „res”.
  5. 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:

  1. Programul importă modulul ast.
  2. Programul inițializează o variabilă șir test_string cu o reprezentare șir a unui dicționar: {Nikhil : 1, Akshat : 2, Akash : 3}.
  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)).
  4. 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).
  5. 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.