Interkonverteringer af datatyper er blevet diskuteret mange gange og har været et ganske populært problem at løse. Denne artikel diskuterer endnu et problem med interkonvertering af ordbogen, i strengformat til en ordbog. Lad os diskutere visse måder, hvorpå dette kan gøres.
Konverter strengordbog til ordbog ved hjælp af json.loads()
Denne opgave kan nemt udføres ved hjælp af den indbyggede funktion af masser af json-bibliotek i python, som konverterer strengen af gyldig ordbog til json-form, ordbog i Python.
Trin-for-trin tilgang:
- Importer ' json ’ modul.
- Initialiser en strengvariabel 'test_string' med en ordbog i strengformat.
- Udskriv den originale streng ved hjælp af 'print()'-funktionen og sammenkæd den med 'test_string'-variablen konverteret til en streng ved hjælp af 'str()'-funktionen.
- Brug funktionen 'json.loads()' til at konvertere ordbogsstrengen til et ordbogsobjekt og tildele den til variablen 'res'.
- Udskriv den konverterede ordbog ved hjælp af 'print()'-funktionen og sammenkæde den med 'res'-variablen konverteret til en streng ved hjælp af 'str()'-funktionen.
Python3
omdøb mappe 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))> |
>
>Output:
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 funktionskald til json.loads, der tager en streng som input og returnerer en ordbog.
Hjælpeplads: O(n), hvor n er længden af inputstrengen. Dette skyldes, at den returnerede ordbog tager plads proportionalt med længden af inputstrengen.
Brug af ast.literal_eval() at konvertere strengordbog til ordbog
Ovenstående metode kan også bruges til at udføre en lignende konvertering. Funktion sikrere end eval-funktionen og kan også bruges til interkonvertering af alle andre datatyper end ordbog.
trin:
- Programmet importerer ast-modulet.
- Programmet initialiserer en strengvariabel test_string med en strengrepræsentation af en ordbog: {Nikhil : 1, Akshat : 2, Akash : 3}.
- Programmet udskriver den originale streng ved hjælp af print()-funktionen og str()-funktionen til at konvertere test_string-variablen til en streng: print(Den originale streng: + str(test_string)).
- Programmet bruger funktionen ast.literal_eval() til at konvertere strengrepræsentationen af ordbogen til en Python-ordbog: res = ast.literal_eval(test_string).
- Programmet udskriver den resulterende ordbog ved hjælp af print()-funktionen og str()-funktionen til at konvertere res-variablen til en streng: print(Den konverterede ordbog: + 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))> |
>
>Output:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Tidskompleksitet: O(n) hvor n er antallet af tegn i ordbogsstrengen.
Hjælpeplads: O(n) hvor n er antallet af elementer i ordbogsstrengen.
Konverter strengordbog til ordbog ved hjælp af eval()
Ovenstående metode kan også bruges til at udføre en lignende konvertering. Funktionen eval() parse det beståede argument og konverterer det til et pythonudtryk og kører pythonudtrykket.
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))> |
>
>
Produktion:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Tidskompleksitet: O(1)
Hjælpeplads: O(1)
Konverter strengordbog til ordbog ved hjælp af split()-metoden og en ordbogsforståelse
Først fjerner vi de krøllede bøjler fra strengen ved hjælp af strip()-metoden. Derefter opdeler vi strengen i en liste over nøgleværdi-par ved hjælp af split()-metoden. Til sidst bruger vi ordbogsforståelse til at iterere over parrene, opdele dem i separate nøgle- og værdistrenge og konvertere værdierne til heltal, før vi tilføjer dem til ordbogen. Den resulterende ordbog returneres.
quicksort
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}> |
>
>Produktion
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Tidskompleksitet: O(n), hvor n er antallet af nøgleværdi-par i ordbogen.
Hjælpeplads: På)
Konverter strengordbog til ordbog ved at bruge eval()-funktionen sammen med en replace()-funktion
- Initialiser en streng, der indeholder ordbogen i strengformat.
- Brug erstatte() funktion til at erstatte alle de enkelte anførselstegn (') i strengen med dobbelte anførselstegn ().
- Brug eval() funktion til at evaluere den resulterende streng som et Python-udtryk, som vil være et ordbogsobjekt.
- Tildel den resulterende ordbog 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))> |
>
>Produktion
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Tidskompleksitet: O(n), hvor n er længden af inputstrengen. Dette skyldes, at funktionen replace() har en tidskompleksitet på O(n).
Hjælpeplads: O(n), hvor n er længden af inputstrengen.