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:
- Importer ' json ' modul.
- Initialiser en strengvariabel 'test_string' med en ordbok i strengformat.
- 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.
- Bruk 'json.loads()'-funksjonen til å konvertere ordbokstrengen til et ordbokobjekt og tilordne den til variabelen 'res'.
- 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
# 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:
- Programmet importerer ast-modulen.
- Programmet initialiserer en strengvariabel test_string med en strengrepresentasjon av en ordbok: {Nikhil : 1, Akshat : 2, Akash : 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)).
- Programmet bruker funksjonen ast.literal_eval() for å konvertere strengrepresentasjonen av ordboken til en Python-ordbok: res = ast.literal_eval(test_string).
- 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.
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
# 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.