Vzájomné konverzie dátových typov boli diskutované mnohokrát a boli pomerne populárnym problémom na riešenie. Tento článok pojednáva o ďalšom probléme vzájomnej konverzie slovníka v reťazcovom formáte do slovníka. Poďme diskutovať o určitých spôsoboch, ako to možno urobiť.
Previesť reťazcový slovník na slovník pomocou json.loads()
Táto úloha sa dá ľahko vykonať pomocou vstavanej funkcie množstva knižnice json pythonu, ktorá konvertuje reťazec platného slovníka do formy json, slovníka v Pythone.
Postupný prístup:
- Importovať „ json „modul“.
- Inicializujte reťazcovú premennú „test_string“ so slovníkom vo formáte reťazca.
- Vytlačte pôvodný reťazec pomocou funkcie „print()“ a zreťazte ho s premennou „test_string“ skonvertovanou na reťazec pomocou funkcie „str()“.
- Pomocou funkcie ‚json.loads()‘ skonvertujte reťazec slovníka na objekt slovníka a priraďte ho k premennej ‚res‘.
- Vytlačte skonvertovaný slovník pomocou funkcie „print()“ a zreťazte ho s premennou „res“ skonvertovanou na reťazec pomocou funkcie „str()“.
Python3
kde nájdem nastavenia prehliadača
# 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))> |
>
>Výkon :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová zložitosť: O(1), pretože ide o jediné volanie funkcie json.loads, ktoré berie reťazec ako vstup a vracia slovník.
Pomocný priestor: O(n), kde n je dĺžka vstupného reťazca. Je to preto, že vrátený slovník zaberá miesto úmerné dĺžke vstupného reťazca.
Použitie ast.literal_eval() na konverziu reťazcového slovníka na slovník
Vyššie uvedený spôsob možno použiť aj na uskutočnenie podobnej konverzie. Funkcia je bezpečnejšia ako funkcia eval a možno ju použiť aj na vzájomnú konverziu všetkých typov údajov iných ako slovník.
kroky:
- Program importuje modul as.
- Program inicializuje reťazcovú premennú test_string s reťazcovou reprezentáciou slovníka: {Nikhil : 1, Akshat : 2, Akash : 3}.
- Program vytlačí pôvodný reťazec pomocou funkcie print() a funkcie str() na konverziu premennej test_string na reťazec: print(Pôvodný reťazec : + str(test_string)).
- Program používa funkciu ast.literal_eval() na konverziu reťazcovej reprezentácie slovníka do slovníka Pythonu: res = ast.literal_eval(test_string).
- Program vytlačí výsledný slovník pomocou funkcie print() a funkcie str() na konverziu premennej res na reťazec: print(Prevedený slovník : + 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))> |
>
>Výkon :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová zložitosť: O(n) kde n je počet znakov v reťazci slovníka.
Pomocný priestor: O(n) kde n je počet prvkov v reťazci slovníka.
Previesť reťazcový slovník na slovník pomocou eval()
Vyššie uvedený spôsob možno použiť aj na uskutočnenie podobnej konverzie. Funkcia eval() analyzuje odovzdaný argument a skonvertuje ho na výraz python a spustí výraz python.
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))> |
>
>
Výkon:
prečiarknutie markdown
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová zložitosť: O(1)
Pomocný priestor: O(1)
Konvertovať reťazcový slovník na slovník pomocou metódy split() a porozumenia slovníka
Najprv odstránime zložené zátvorky z reťazca pomocou metódy strip(). Potom pomocou metódy split() rozdelíme reťazec na zoznam párov kľúč – hodnota. Nakoniec používame porozumenie slovníka na iteráciu párov, ich rozdelenie do samostatných reťazcov kľúčov a hodnôt a konverziu hodnôt na celé čísla pred ich pridaním do slovníka. Výsledný slovník sa vráti.
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}> |
>
>Výkon
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová zložitosť: O(n), kde n je počet párov kľúč – hodnota v slovníku.
Pomocný priestor: O(n)
hashset java
Konvertovať reťazcový slovník na slovník Pomocou funkcie eval() spolu s funkciou replace().
- Inicializujte reťazec obsahujúci slovník vo formáte reťazca.
- Použi nahradiť () funkcia na nahradenie všetkých jednoduchých úvodzoviek (‘) v reťazci dvojitými úvodzovkami ().
- Použi eval() funkcia na vyhodnotenie výsledného reťazca ako výrazu Python, ktorý bude objektom slovníka.
- Výsledný slovník priraďte k premennej.
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))> |
>
>Výkon
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová zložitosť: O(n), kde n je dĺžka vstupného reťazca. Je to preto, že funkcia replace() má časovú zložitosť O(n).
Pomocný priestor: O(n), kde n je dĺžka vstupného reťazca.