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
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:
- 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.
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.