logo

Konwertuj słownik ciągów na słownik Python

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:



  1. Zaimportuj „ json moduł.
  2. Zainicjuj zmienną łańcuchową „test_string” za pomocą słownika w formacie ciągu.
  3. 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()”.
  4. Użyj funkcji „json.loads()”, aby przekonwertować ciąg słownikowy na obiekt słownikowy i przypisać go do zmiennej „res”.
  5. 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 :

  1. Program importuje moduł ast.
  2. Program inicjuje zmienną łańcuchową test_string ciągiem reprezentującym słownik: {Nikhil: 1, Akshat: 2, Akash: 3}.
  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)).
  4. 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).
  5. 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.