Wzajemne konwersje typów danych były omawiane wielokrotnie i stanowią dość popularny problem do rozwiązania. W artykule omówiono jeszcze jeden problem wzajemnej konwersji słownika w formacie ciągu znaków na słownik. Omówmy pewne sposoby, w jakie można to zrobić.
Konwertuj słownik ciągów na słownik za pomocą json.loads()
To zadanie można łatwo wykonać, korzystając z wbudowanej funkcji ładowania biblioteki json w Pythonie, która konwertuje ciąg prawidłowego słownika do postaci json, słownika w Pythonie.
Podejście krok po kroku:
- Zaimportuj „ json moduł.
- Zainicjuj zmienną łańcuchową „test_string” za pomocą słownika w formacie ciągu.
- Wydrukuj oryginalny ciąg znaków za pomocą funkcji „print()” i połącz go ze zmienną „test_string” przekonwertowaną na ciąg znaków za pomocą funkcji „str()”.
- Użyj funkcji „json.loads()”, aby przekonwertować ciąg słownikowy na obiekt słownikowy i przypisać go do zmiennej „res”.
- Wydrukuj przekonwertowany słownik za pomocą funkcji „print()” i połącz go ze zmienną „res” przekonwertowaną na ciąg znaków za pomocą funkcji „str()”.
Python3
programowanie w języku C bez znaku
# 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))> |
>
>Wyjście :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Złożoność czasowa: O(1), ponieważ jest to pojedyncze wywołanie funkcji json.loads, które pobiera ciąg znaków jako dane wejściowe i zwraca słownik.
Przestrzeń pomocnicza: O(n), gdzie n jest długością ciągu wejściowego. Dzieje się tak, ponieważ zwrócony słownik zajmuje miejsce proporcjonalne do długości ciągu wejściowego.
Używanie ast.literal_eval() aby przekonwertować słownik ciągów na słownik
Powyższą metodę można również zastosować do wykonania podobnej konwersji. Funkcja bezpieczniejsza niż funkcja eval i może być używana do wzajemnej konwersji wszystkich typów danych innych niż słownikowe.
kroki :
- Program importuje moduł ast.
- Program inicjuje zmienną łańcuchową test_string ciągiem reprezentującym słownik: {Nikhil: 1, Akshat: 2, Akash: 3}.
- Program wypisuje oryginalny ciąg znaków za pomocą funkcji print() i funkcji str(), aby przekonwertować zmienną test_string na ciąg znaków: print(Oryginalny ciąg znaków: + str(string_test)).
- Program używa funkcji ast.literal_eval() do konwersji ciągu znaków reprezentującego słownik na słownik Pythona: res = ast.literal_eval(test_string).
- Program wypisuje wynikowy słownik, korzystając z funkcji print() i funkcji str(), aby przekonwertować zmienną res na ciąg znaków: print(Przekonwertowany słownik: + 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))> |
>
>Wyjście :
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Złożoność czasowa: O(n) gdzie n jest liczbą znaków w ciągu słownikowym.
Przestrzeń pomocnicza: O(n) gdzie n jest liczbą elementów w ciągu słownikowym.
Konwertuj słownik ciągów na słownik za pomocą eval()
Powyższą metodę można również zastosować do wykonania podobnej konwersji. Funkcja eval() analizuje przekazany argument, konwertuje go na wyrażenie Pythona i uruchamia wyrażenie Pythona.
Pyton
# 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))> |
if else instrukcja Java
>
>
Wyjście:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Złożoność czasowa: O(1)
Przestrzeń pomocnicza: O(1)
Konwertuj słownik ciągów na słownik, korzystając z metody split() i rozumienia słownika
Najpierw usuwamy nawiasy klamrowe z ciągu za pomocą metody strip(). Następnie dzielimy ciąg na listę par klucz-wartość za pomocą metody split(). Na koniec używamy zrozumienia słownika, aby iterować po parach, dzielić je na osobne ciągi kluczy i wartości oraz konwertować wartości na liczby całkowite przed dodaniem ich do słownika. Wynikowy słownik jest zwracany.
Python3
wartość logiczna na ciąg
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}> |
>
>Wyjście
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Złożoność czasowa: O(n), gdzie n jest liczbą par klucz-wartość w słowniku.
Przestrzeń pomocnicza: NA)
Konwertuj słownik ciągów na słownik Korzystanie z funkcji eval() wraz z funkcją zamiany().
- Zainicjuj ciąg zawierający słownik w formacie ciągu.
- Użyj zastępować() funkcja zastępująca wszystkie pojedyncze cudzysłowy (‘) w ciągu znaków podwójnymi cudzysłowami ().
- Użyj ewaluacja() funkcję do oceny powstałego ciągu jako wyrażenia Pythona, które będzie obiektem słownika.
- Przypisz wynikowy słownik do zmiennej.
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))> |
>
>Wyjście
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Złożoność czasowa: O(n), gdzie n jest długością ciągu wejściowego. Dzieje się tak, ponieważ funkcja zamiany() ma złożoność czasową O(n).
Przestrzeń pomocnicza: O(n), gdzie n jest długością ciągu wejściowego.