Konvertuoti eilučių žodyną į žodyną Python
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
# 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
# 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))> |
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 į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.