logo

Konverter String Dictionary til Dictionary Python

Interkonverteringer av datatyper har blitt diskutert mange ganger og har vært et ganske populært problem å løse. Denne artikkelen diskuterer enda et problem med interkonvertering av ordboken, i strengformat til en ordbok. La oss diskutere visse måter dette kan gjøres på.

Konverter strengordbok til ordbok ved å bruke json.loads()

Denne oppgaven kan enkelt utføres ved å bruke den innebygde funksjonen til massevis av json-biblioteket til python som konverterer strengen med gyldig ordbok til json-form, ordbok i Python.

Steg-for-steg tilnærming:



  1. Importer ' json ' modul.
  2. Initialiser en strengvariabel 'test_string' med en ordbok i strengformat.
  3. Skriv ut den originale strengen ved å bruke 'print()'-funksjonen og sett den sammen med 'test_string'-variabelen konvertert til en streng ved å bruke 'str()'-funksjonen.
  4. Bruk 'json.loads()'-funksjonen til å konvertere ordbokstrengen til et ordbokobjekt og tilordne den til variabelen 'res'.
  5. Skriv ut den konverterte ordboken ved å bruke 'print()'-funksjonen og sett den sammen med 'res'-variabelen konvertert til en streng ved å bruke 'str()'-funksjonen.

Python3


endre navn på katalog på linux



# 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))>

>

>

Utgang:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Tidskompleksitet: O(1) da det er et enkelt funksjonskall til json.loads som tar en streng som input og returnerer en ordbok.
Ekstra plass: O(n), hvor n er lengden på inndatastrengen. Dette er fordi den returnerte ordboken tar plass proporsjonalt med lengden på inndatastrengen.

Bruker ast.literal_eval() å konvertere strengordbok til ordbok

Metoden ovenfor kan også brukes til å utføre en lignende konvertering. Funksjonen er sikrere enn eval-funksjonen og kan også brukes til interkonvertering av alle datatyper bortsett fra ordbok.

trinn:

  1. Programmet importerer ast-modulen.
  2. Programmet initialiserer en strengvariabel test_string med en strengrepresentasjon av en ordbok: {Nikhil : 1, Akshat : 2, Akash : 3}.
  3. Programmet skriver ut den originale strengen ved å bruke print()-funksjonen og str()-funksjonen for å konvertere test_string-variabelen til en streng: print(Den originale strengen: + str(test_string)).
  4. Programmet bruker funksjonen ast.literal_eval() for å konvertere strengrepresentasjonen av ordboken til en Python-ordbok: res = ast.literal_eval(test_string).
  5. Programmet skriver ut den resulterende ordboken ved å bruke print()-funksjonen og str()-funksjonen for å konvertere res-variabelen til en streng: print(Den konverterte ordboken: + 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))>

>

>

Utgang:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Tidskompleksitet: O(n) hvor n er antall tegn i ordbokstrengen.
Ekstra plass: O(n) hvor n er antall elementer i ordbokstrengen.

Konverter strengordbok til ordbok ved å bruke eval()

Metoden ovenfor kan også brukes til å utføre en lignende konvertering. Funksjonen eval() analyserer argumentet som ble sendt og konverterer det til et python-uttrykk og kjører python-uttrykket.

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))>

>

>

Produksjon:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Tidskompleksitet: O(1)
Hjelpeplass: O(1)

Konverter String Dictionary til Dictionary Ved å bruke split()-metoden og en ordbokforståelse

Først fjerner vi de krøllete klammeparentesene fra strengen ved å bruke strip()-metoden. Deretter deler vi strengen i en liste over nøkkelverdi-par ved å bruke split()-metoden. Til slutt bruker vi ordbokforståelse for å iterere over parene, dele dem opp i separate nøkkel- og verdistrenger, og konvertere verdiene til heltall før vi legger dem til ordboken. Den resulterende ordboken returneres.

liste i java

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}>

>

>

Produksjon

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Tidskompleksitet: O(n), hvor n er antall nøkkelverdi-par i ordboken.
Ekstra plass: På)

Konverter strengordbok til ordbok ved å bruke eval()-funksjonen sammen med en replace()-funksjon

  • Initialiser en streng som inneholder ordboken i strengformat.
  • Bruke erstatte() funksjon for å erstatte alle enkle anførselstegn (') i strengen med doble anførselstegn ().
  • Bruke eval() funksjon for å evaluere den resulterende strengen som et Python-uttrykk, som vil være et ordbokobjekt.
  • Tilordne den resulterende ordboken til en variabel.

Python3




ls kommandoer linux

# 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))>

>

>

Produksjon

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Tidskompleksitet: O(n), hvor n er lengden på inndatastrengen. Dette er fordi replace()-funksjonen har en tidskompleksitet på O(n).
Ekstra plass: O(n), hvor n er lengden på inndatastrengen.