Duomenų tipų tarpusavio konvertavimas buvo daug kartų aptartas ir buvo gana populiari problema, kurią reikia išspręsti. Šiame straipsnyje aptariama dar viena žodyno konvertavimo eilutės formatu į žodyną problema. Aptarkime tam tikrus būdus, kaip tai galima padaryti.
Konvertuoti eilučių žodyną į žodyną naudojant json.loads()
Šią užduotį galima lengvai atlikti naudojant integruotą python json bibliotekos apkrovų funkciją, kuri konvertuoja galiojančio žodyno eilutę į json formą, žodyną Python.
Žingsnis po žingsnio metodas:
- Importuoti „ json “ modulis.
- Inicijuokite eilutės kintamąjį „test_string“ naudodami žodyną eilutės formatu.
- Išspausdinkite pradinę eilutę naudodami funkciją „print()“ ir sujungdami ją su „test_string“ kintamuoju, konvertuotu į eilutę naudodami funkciją „str()“.
- Naudokite funkciją „json.loads()“, norėdami konvertuoti žodyno eilutę į žodyno objektą ir priskirti ją kintamajam „res“.
- Išspausdinkite konvertuotą žodyną naudodami funkciją „print()“ ir sujunkite jį su „res“ kintamuoju, konvertuotu į eilutę naudodami funkciją „str()“.
Python3
Java programavimo pirminiai skaičiai
# 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))> |
>
>Išvestis:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laiko sudėtingumas: O(1), nes tai yra vienos funkcijos iškvietimas į json.loads, kuris paima eilutę kaip įvestį ir grąžina žodyną.
Pagalbinė erdvė: O(n), kur n yra įvesties eilutės ilgis. Taip yra todėl, kad grąžintas žodynas užima vietos proporcingai įvesties eilutės ilgiui.
Naudojant ast.literal_eval() konvertuoti eilučių žodyną į žodyną
Aukščiau pateiktas metodas taip pat gali būti naudojamas panašiai konversijai atlikti. Funkcija saugesnė nei funkcija eval ir gali būti naudojama visų tipų duomenims, išskyrus žodyną, konvertuoti.
žingsniai:
- Programa importuoja ast modulį.
- Programa inicijuoja eilutės kintamąjį test_string su žodyno eilutės reprezentacija: {Nikhil : 1, Akshat : 2, Akash : 3}.
- Programa spausdina pradinę eilutę naudodama funkciją print() ir funkciją str(), kad kintamąjį test_string konvertuotų į eilutę: print(Original string : + str(test_string)).
- Programa naudoja funkciją ast.literal_eval(), kad konvertuotų žodyno eilutės vaizdą į Python žodyną: res = ast.literal_eval(test_string).
- Programa atspausdina gautą žodyną naudodama funkciją print() ir funkciją str(), kad res kintamąjį konvertuotų į eilutę: print(Konvertuotas žodynas : + 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))> |
>
>Išvestis:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laiko sudėtingumas: O(n) kur n yra simbolių skaičius žodyno eilutėje.
Pagalbinė erdvė: O(n) čia n yra elementų skaičius žodyno eilutėje.
Konvertuoti eilučių žodyną į žodyną naudojant eval()
Aukščiau pateiktas metodas taip pat gali būti naudojamas panašiai konversijai atlikti. Funkcija eval() analizuoja pateiktą argumentą ir konvertuoja jį į python išraišką ir paleidžia python išraišką.
Python
ne
# 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))> |
>
>
Išvestis:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laiko sudėtingumas: O(1)
Pagalbinė erdvė: O(1)
Konvertuoti eilučių žodyną į žodyną naudojant split() metodą ir žodyno supratimą
Pirma, mes pašaliname garbanotas petnešas iš eilutės, naudodami strip() metodą. Tada mes suskaidome eilutę į raktų ir reikšmių porų sąrašą, naudodami split() metodą. Galiausiai, mes naudojame žodyno supratimą, norėdami kartoti poras, padalinti jas į atskiras raktų ir reikšmių eilutes ir konvertuoti reikšmes į sveikuosius skaičius prieš įtraukdami jas į žodyną. Gautas žodynas grąžinamas.
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}> |
>
>Išvestis
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laiko sudėtingumas: O(n), kur n yra raktų ir reikšmių porų skaičius žodyne.
Pagalbinė erdvė: O(n)
Konvertuoti eilučių žodyną į žodyną Naudodami funkciją eval() kartu su funkcija „replace()“.
- Inicijuokite eilutę, kurioje yra žodynas eilutės formatu.
- Naudoti pakeisti () funkcija pakeisti visas pavienes kabutes (') eilutėje dvigubomis kabutėmis ().
- Naudoti eval () funkcija įvertinti gautą eilutę kaip Python išraišką, kuri bus žodyno objektas.
- Gautą žodyną priskirkite kintamajam.
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))> |
>
>
transformuoti eilutę į intIšvestis
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Laiko sudėtingumas: O(n), kur n yra įvesties eilutės ilgis. Taip yra todėl, kad pakeisti() funkcijos laiko sudėtingumas yra O(n).
Pagalbinė erdvė: O(n), kur n yra įvesties eilutės ilgis.