Converteer Stringwoordenboek naar Woordenboek Python

Onderlinge conversies van gegevenstypen zijn vele malen besproken en het is een vrij populair probleem om op te lossen. Dit artikel bespreekt nog een ander probleem van de onderlinge conversie van het woordenboek, in tekenreeksformaat naar een woordenboek. Laten we bepaalde manieren bespreken waarop dit kan worden gedaan.

Converteer stringwoordenboek naar woordenboek met json.loads()

Deze taak kan eenvoudig worden uitgevoerd met behulp van de ingebouwde functie van een grote hoeveelheid json-bibliotheek van Python, die de reeks geldige woordenboeken omzet in json-vorm, woordenboek in Python.

Stapsgewijze aanpak:

  1. Importeer de ‘ json ‘module.
  2. Initialiseer een stringvariabele ‘test_string’ met een woordenboek in stringformaat.
  3. Druk de originele string af met behulp van de functie ‘print()’ en voeg deze samen met de variabele ‘test_string’, geconverteerd naar een string met behulp van de functie ‘str()’.
  4. Gebruik de functie ‘json.loads()’ om de woordenboekreeks naar een woordenboekobject te converteren en deze toe te wijzen aan de variabele ‘res’.
  5. Druk het geconverteerde woordenboek af met behulp van de functie ‘print()’ en voeg het samen met de variabele ‘res’, geconverteerd naar een string met behulp van de functie ‘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))>

Uitgang:

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

Tijdcomplexiteit: O(1) omdat het een enkele functieaanroep naar json.loads is die een string als invoer gebruikt en een woordenboek retourneert.
Hulpruimte: O(n), waarbij n de lengte van de invoerreeks is. Dit komt omdat het geretourneerde woordenboek ruimte in beslag neemt die evenredig is aan de lengte van de invoertekenreeks.

Ast.literal_eval() gebruiken om Stringwoordenboek naar woordenboek te converteren

De bovenstaande methode kan ook worden gebruikt om een ​​soortgelijke conversie uit te voeren. Functie veiliger dan de eval-functie en kan ook worden gebruikt voor onderlinge conversie van alle gegevenstypen behalve woordenboek.

stappen:

  1. Het programma importeert de as-module.
  2. Het programma initialiseert een stringvariabele test_string met een stringrepresentatie van een woordenboek: {Nikhil: 1, Akshat: 2, Akash: 3}.
  3. Het programma drukt de originele string af met behulp van de print() functie en de str() functie om de test_string variabele naar een string te converteren: print(De originele string: + str(test_string)).
  4. Het programma gebruikt de functie ast.literal_eval() om de tekenreeksrepresentatie van het woordenboek om te zetten in een Python-woordenboek: res = ast.literal_eval(test_string).
  5. Het programma drukt het resulterende woordenboek af met behulp van de print()-functie en de str()-functie om de res-variabele naar een string te converteren: print(Het geconverteerde woordenboek: + 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))>

Uitgang:

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

Tijdcomplexiteit: O(n) waarbij n het aantal tekens in de woordenboekreeks is.
Hulpruimte: O(n) waarbij n het aantal elementen in de woordenboekreeks is.

Converteer stringwoordenboek naar woordenboek met behulp van eval()

De bovenstaande methode kan ook worden gebruikt om een ​​soortgelijke conversie uit te voeren. De functie eval() ontleedt het doorgegeven argument, converteert het naar een Python-expressie en voert de Python-expressie uit.

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

Uitgang:

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

Tijdcomplexiteit: O(1)
Hulpruimte: O(1)

Converteer stringwoordenboek naar woordenboek met behulp van de split()-methode en woordenboekbegrip

Eerst verwijderen we de accolades uit de string met behulp van de strip() methode. Vervolgens splitsen we de tekenreeks op in een lijst met sleutelwaardeparen met behulp van de methode split(). Ten slotte gebruiken we woordenboekbegrip om de paren te herhalen, ze op te splitsen in afzonderlijke sleutel- en waardereeksen, en de waarden om te zetten in gehele getallen voordat ze aan het woordenboek worden toegevoegd. Het resulterende woordenboek wordt geretourneerd.

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

Uitvoer

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

Tijdcomplexiteit: O(n), waarbij n het aantal sleutelwaardeparen in het woordenboek is.
Hulpruimte: Op)

Converteer stringwoordenboek naar woordenboek met behulp van de functie eval() samen met een functie Replace().

  • Initialiseer een tekenreeks die het woordenboek in tekenreeksindeling bevat.
  • Gebruik de vervangen() functie om alle enkele aanhalingstekens (‘) in de tekenreeks te vervangen door dubbele aanhalingstekens ().
  • Gebruik de evaluatie() functie om de resulterende tekenreeks te evalueren als een Python-expressie, die een woordenboekobject zal zijn.
  • Wijs het resulterende woordenboek toe aan een variabele.

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

Uitvoer

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

Tijdcomplexiteit: O(n), waarbij n de lengte van de invoerreeks is. Dit komt omdat de functie Replace() een tijdscomplexiteit van O(n) heeft.
Hulpruimte: O(n), waarbij n de lengte van de invoerreeks is.