Vzájemné konverze datových typů byly mnohokrát diskutovány a byly poměrně oblíbeným problémem k řešení. Tento článek pojednává o dalším problému vzájemného převodu slovníku ve formátu řetězce do slovníku. Pojďme diskutovat o určitých způsobech, jak to lze provést.
Převést řetězcový slovník na slovník pomocí json.loads()
Tento úkol lze snadno provést pomocí vestavěné funkce zatížení knihovny json pythonu, která převádí řetězec platného slovníku do formy json, slovníku v Pythonu.
Postup krok za krokem:
- Importovat „ json „modul“.
- Inicializujte řetězcovou proměnnou „test_string“ se slovníkem ve formátu řetězce.
- Vytiskněte původní řetězec pomocí funkce ‚print()‘ a zřetězte jej s proměnnou ‚test_string‘ převedenou na řetězec pomocí funkce ‚str()‘.
- Pomocí funkce ‚json.loads()‘ převedete řetězec slovníku na objekt slovníku a přiřadíte jej k proměnné ‚res‘.
- Vytiskněte převedený slovník pomocí funkce ‚print()‘ a zřetězte jej s proměnnou ‚res‘ převedenou na řetězec pomocí funkce ‚str()‘.
Python3
diskrétní matematická negace
# 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ýstup :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová složitost: O(1), protože jde o jediné volání funkce json.loads, které přijímá řetězec jako vstup a vrací slovník.
Pomocný prostor: O(n), kde n je délka vstupního řetězce. Důvodem je, že vrácený slovník zabírá místo úměrné délce vstupního řetězce.
Použití ast.literal_eval() převést řetězcový slovník na slovník
Výše uvedený způsob lze také použít k provedení podobné konverze. Funkce je bezpečnější než funkce eval a lze ji použít i pro vzájemnou konverzi všech datových typů jiných než slovník.
kroky:
- Program importuje modul ast.
- Program inicializuje řetězcovou proměnnou test_string s řetězcovou reprezentací slovníku: {Nikhil : 1, Akshat : 2, Akash : 3}.
- Program vytiskne původní řetězec pomocí funkce print() a funkce str() pro převod proměnné test_string na řetězec: print(Původní řetězec: + str(testovací_řetězec)).
- Program používá funkci ast.literal_eval() k převodu řetězcové reprezentace slovníku do slovníku Pythonu: res = ast.literal_eval(test_string).
- Program vytiskne výsledný slovník pomocí funkce print() a funkce str() pro převod proměnné res na řetězec: print(Převedený 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ýstup :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová složitost: O(n) kde n je počet znaků v řetězci slovníku.
Pomocný prostor: O(n) kde n je počet prvků v řetězci slovníku.
Převést řetězcový slovník na slovník pomocí eval()
Výše uvedený způsob lze také použít k provedení podobné konverze. Funkce eval() analyzuje předaný argument a převede jej na výraz python a spustí výraz python.
Krajta
stringformat
# 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ýstup:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová náročnost: O(1)
Pomocný prostor: O(1)
Převod řetězcového slovníku na slovník pomocí metody split() a porozumění slovníku
Nejprve odstraníme složené závorky z řetězce pomocí metody strip(). Poté pomocí metody split() rozdělíme řetězec na seznam párů klíč–hodnota. Nakonec používáme porozumění slovníku k iteraci párů, jejich rozdělení do samostatných řetězců klíčů a hodnot a převodu hodnot na celá čísla před jejich přidáním do slovníku. Výsledný slovník se vrátí.
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ýstup
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová náročnost: O(n), kde n je počet párů klíč–hodnota ve slovníku.
Pomocný prostor: Na)
Převod řetězcového slovníku na slovník Pomocí funkce eval() spolu s funkcí replace().
- Inicializujte řetězec obsahující slovník ve formátu řetězce.
- Použijte nahradit() funkce k nahrazení všech jednoduchých uvozovek (‘) v řetězci dvojitými uvozovkami ().
- Použijte eval() funkce vyhodnotit výsledný řetězec jako výraz Python, který bude objektem slovníku.
- Výsledný slovník přiřaďte proměnné.
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))> |
>
filmová herečka rekha
>Výstup
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Časová složitost: O(n), kde n je délka vstupního řetězce. Je to proto, že funkce replace() má časovou složitost O(n).
Pomocný prostor: O(n), kde n je délka vstupního řetězce.