logo

Muunna merkkijonosanakirja Python-sanakirjaksi

Tietotyyppien muuntamisesta on keskusteltu monta kertaa, ja ne ovat olleet varsin suosittu ratkaistava ongelma. Tässä artikkelissa käsitellään vielä toista ongelmaa, joka liittyy sanakirjan muuntamiseen sanakirjaksi merkkijonomuodossa. Keskustellaan tietyistä tavoista, joilla tämä voidaan tehdä.

Muunna merkkijonosanakirja sanakirjaksi käyttämällä json.loads()

Tämä tehtävä voidaan suorittaa helposti käyttämällä pythonin json-kirjaston sisäänrakennettua toimintoa, joka muuntaa kelvollisen sanakirjan merkkijonon json-muotoon, sanakirja Pythonissa.

Vaiheittainen lähestymistapa:



  1. Tuo ' json '-moduuli.
  2. Alusta merkkijonomuuttuja 'test_string' sanakirjalla merkkijonomuodossa.
  3. Tulosta alkuperäinen merkkijono käyttämällä 'print()'-funktiota ja ketjuttamalla se 'test_string'-muuttujan kanssa, joka on muunnettu merkkijonoksi 'str()'-funktiolla.
  4. Käytä json.loads()-funktiota sanakirjajonon muuntamiseen sanakirjaobjektiksi ja liitä se muuttujaan 'res'.
  5. Tulosta muunnettu sanakirja print()-funktiolla ja ketjuta se res-muuttujan kanssa, joka on muunnettu merkkijonoksi käyttämällä str()-funktiota.

Python 3


polku asetettu javassa



# 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))>

>

>

Lähtö:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Aika monimutkaisuus: O(1), koska se on yksittäinen funktiokutsu json.loadsille, joka ottaa syötteenä merkkijonon ja palauttaa sanakirjan.
Aputila: O(n), missä n on syötetyn merkkijonon pituus. Tämä johtuu siitä, että palautettu sanakirja vie tilaa syötetyn merkkijonon pituuteen verrannollisesti.

Ast.literal_eval() muuntaa merkkijonosanakirjan sanakirjaksi

Yllä olevaa menetelmää voidaan käyttää myös samanlaisen muunnoksen suorittamiseen. Toiminto on turvallisempi kuin eval-toiminto ja sitä voidaan käyttää myös kaikkien muiden tietotyyppien kuin sanakirjan muuntamiseen.

askeleet :

  1. Ohjelma tuo ast-moduulin.
  2. Ohjelma alustaa merkkijonomuuttujan test_string sanakirjan merkkijonoesityksellä: {Nikhil : 1, Akshat : 2, Akash : 3}.
  3. Ohjelma tulostaa alkuperäisen merkkijonon print()-funktiolla ja str()-funktiolla muuntaakseen test_string-muuttujan merkkijonoksi: print(Alkuperäinen merkkijono : + str(test_string)).
  4. Ohjelma käyttää ast.literal_eval()-funktiota sanakirjan merkkijonoesityksen muuntamiseen Python-sanakirjaksi: res = ast.literal_eval(test_string).
  5. Ohjelma tulostaa tuloksena olevan sanakirjan print()-funktiolla ja str()-funktiolla muuntaakseen res-muuttujan merkkijonoksi: print(Käännetty sanakirja: + str(res)).

Python 3




# 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))>

>

>

Lähtö:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Aika monimutkaisuus: O(n) missä n on merkkien lukumäärä sanakirjajonossa.
Aputila: O(n) missä n on elementtien lukumäärä sanakirjajonossa.

Muunna merkkijonosanakirja sanakirjaksi käyttämällä eval()

Yllä olevaa menetelmää voidaan käyttää myös samanlaisen muunnoksen suorittamiseen. Funktio eval() jäsentää välitetyn argumentin ja muuntaa sen python-lausekkeeksi ja suorittaa python-lausekkeen.

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))>

valmistautua testiin mockito
>

>

Lähtö:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Aika monimutkaisuus: O(1)
Aputila: O(1)

Muunna merkkijonosanakirja sanakirjaksi käyttämällä split()-menetelmää ja sanakirjan ymmärtämistä

Ensin poistamme kiharat aaltosulkeet merkkijonosta strip()-menetelmällä. Sitten jaamme merkkijonon avainarvoparien luetteloksi käyttämällä split()-menetelmää. Lopuksi käytämme sanakirjan ymmärtämistä iteroidaksemme pareja, jakaa ne erillisiin avain- ja arvomerkkijonoihin ja muuntaa arvot kokonaisluvuiksi ennen niiden lisäämistä sanakirjaan. Tuloksena oleva sanakirja palautetaan.

Python 3




matka mutta

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}>

>

>

Lähtö

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Aika monimutkaisuus: O(n), missä n on avainarvoparien lukumäärä sanakirjassa.
Aputila: Päällä)

Muunna merkkijonosanakirja sanakirjaksi käyttämällä eval()-funktiota yhdessä vaihto-funktion kanssa

  • Alusta merkkijono, joka sisältää sanakirjan merkkijonomuodossa.
  • Käytä korvata() funktio korvaa kaikki kertalainausmerkit (') merkkijonossa kaksoislainausmerkeillä ().
  • Käytä eval() funktio arvioida tuloksena olevan merkkijonon Python-lausekkeena, joka on sanakirjaobjekti.
  • Määritä tuloksena oleva sanakirja muuttujaan.

Python 3




# 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))>

>

>

Lähtö

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

Aika monimutkaisuus: O(n), missä n on syötetyn merkkijonon pituus. Tämä johtuu siitä, että korvaa()-funktion aikamonimutkaisuus on O(n).
Aputila: O(n), missä n on syötetyn merkkijonon pituus.