logo

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:



  1. Importuoti „ json “ modulis.
  2. Inicijuokite eilutės kintamąjį „test_string“ naudodami žodyną eilutės formatu.
  3. Išspausdinkite pradinę eilutę naudodami funkciją „print()“ ir sujungdami ją su „test_string“ kintamuoju, konvertuotu į eilutę naudodami funkciją „str()“.
  4. Naudokite funkciją „json.loads()“, norėdami konvertuoti žodyno eilutę į žodyno objektą ir priskirti ją kintamajam „res“.
  5. 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:

  1. Programa importuoja ast modulį.
  2. Programa inicijuoja eilutės kintamąjį test_string su žodyno eilutės reprezentacija: {Nikhil : 1, Akshat : 2, Akash : 3}.
  3. Programa spausdina pradinę eilutę naudodama funkciją print() ir funkciją str(), kad kintamąjį test_string konvertuotų į eilutę: print(Original string : + str(test_string)).
  4. Programa naudoja funkciją ast.literal_eval(), kad konvertuotų žodyno eilutės vaizdą į Python žodyną: res = ast.literal_eval(test_string).
  5. 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ę į int
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.