Datu tipu savstarpējās konvertēšanas ir apspriestas daudzas reizes, un tās ir bijušas diezgan populāras risināmas problēmas. Šajā rakstā ir apskatīta vēl viena problēma, kas saistīta ar vārdnīcas savstarpēju pārveidošanu virknes formātā par vārdnīcu. Apspriedīsim dažus veidus, kā to var izdarīt.
Pārvērst virkņu vārdnīcu par vārdnīcu, izmantojot json.loads()
Šo uzdevumu var viegli veikt, izmantojot python json bibliotēkas ielādes iebūvēto funkciju, kas derīgās vārdnīcas virkni pārvērš json formā, vārdnīcā Python.
Soli pa solim pieeja:
- Importēt ' json ‘ modulis.
- Inicializējiet virknes mainīgo “test_string”, izmantojot vārdnīcu virknes formātā.
- Izdrukājiet sākotnējo virkni, izmantojot funkciju “print()” un savienojot to ar mainīgo “test_string”, kas pārveidots par virkni, izmantojot funkciju “str()”.
- Izmantojiet funkciju “json.loads()”, lai pārvērstu vārdnīcas virkni par vārdnīcas objektu un piešķirtu to mainīgajam “res”.
- Izdrukājiet pārveidoto vārdnīcu, izmantojot funkciju “print()” un savienojot to ar mainīgo “res”, kas pārveidots par virkni, izmantojot funkciju “str()”.
Python3
cik daudz pilsētu ASV
# 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))> |
>
>Izvade:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laika sarežģītība: O(1), jo tas ir vienas funkcijas izsaukums uz json.loads, kas izmanto virkni kā ievadi un atgriež vārdnīcu.
Palīgtelpa: O(n), kur n ir ievades virknes garums. Tas ir tāpēc, ka atgrieztā vārdnīca aizņem vietu proporcionāli ievades virknes garumam.
Izmantojot ast.literal_eval() lai pārvērstu stīgu vārdnīcu par vārdnīcu
Iepriekš minēto metodi var izmantot arī līdzīgas konversijas veikšanai. Funkcija ir drošāka par funkciju eval, un to var izmantot arī visu datu tipu, izņemot vārdnīcu, savstarpējai konvertēšanai.
soļi:
- Programma importē ast moduli.
- Programma inicializē virknes mainīgo test_string ar vārdnīcas virknes attēlojumu: {Nikhil : 1, Akshat : 2, Akash : 3}.
- Programma izdrukā sākotnējo virkni, izmantojot funkciju print() un funkciju str(), lai testa_string mainīgo pārvērstu par virkni: print(Sākotnējā virkne : + str(test_string)).
- Programma izmanto funkciju ast.literal_eval(), lai pārvērstu vārdnīcas virknes attēlojumu Python vārdnīcā: res = ast.literal_eval(test_string).
- Programma izdrukā iegūto vārdnīcu, izmantojot funkciju print() un funkciju str(), lai pārveidotu res mainīgo par virkni: print (pārveidotā vārdnīca: + 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))> |
>
>Izvade:
masīvs Java valodā
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laika sarežģītība: O(n) kur n ir rakstzīmju skaits vārdnīcas virknē.
Palīgtelpa: O(n) kur n ir elementu skaits vārdnīcas virknē.
Pārvērtiet virkņu vārdnīcu par vārdnīcu, izmantojot eval()
Iepriekš minēto metodi var izmantot arī līdzīgas konversijas veikšanai. Funkcija eval() parsē nodoto argumentu un pārvērš to par python izteiksmi un palaiž python izteiksmi.
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))> |
>
>
Izvade:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laika sarežģītība: O(1)
Palīgtelpa: O(1)
Pārvērst virkņu vārdnīcu par vārdnīcu, izmantojot split() metodi un vārdnīcas izpratni
Pirmkārt, mēs noņemam cirtaini lencēm no virknes, izmantojot strip() metodi. Pēc tam mēs sadalām virkni atslēgu un vērtību pāru sarakstā, izmantojot split() metodi. Visbeidzot, mēs izmantojam vārdnīcas izpratni, lai atkārtotu pārus, sadalītu tos atsevišķās atslēgu un vērtību virknēs un pārvērstu vērtības veselos skaitļos pirms to pievienošanas vārdnīcai. Rezultātā iegūtā vārdnīca tiek atgriezta.
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}> |
>
vaicājuma atlasītājs
>Izvade
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laika sarežģītība: O(n), kur n ir atslēgu-vērtību pāru skaits vārdnīcā.
Palīgtelpa: O(n)
Pārvērst virknes vārdnīcu par vārdnīcu Izmantojot funkciju eval() kopā ar funkciju aizstāt().
- Inicializējiet virkni, kas satur vārdnīcu virknes formātā.
- Izmantojiet aizvietot() funkcija, lai visas vienpēdiņas (') virknē aizstātu ar dubultpēdiņām ().
- Izmantojiet eval() funkciju, lai novērtētu iegūto virkni kā Python izteiksmi, kas būs vārdnīcas objekts.
- Piešķiriet iegūto vārdnīcu mainīgajam.
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))> |
>
>Izvade
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laika sarežģītība: O(n), kur n ir ievades virknes garums. Tas ir tāpēc, ka aizvietot() funkcijas laika sarežģītība ir O(n).
Palīgtelpa: O(n), kur n ir ievades virknes garums.