Взаємоперетворення типів даних обговорювалося багато разів і було досить популярною проблемою для вирішення. У цій статті обговорюється ще одна проблема взаємоперетворення словника в рядковому форматі в словник. Давайте обговоримо певні способи, як це можна зробити.
Перетворення рядкового словника на словник за допомогою json.loads()
Це завдання можна легко виконати за допомогою вбудованої функції завантажень бібліотеки json python, яка перетворює рядок дійсного словника у форму json, словник у Python.
Покроковий підхід:
- Імпорт ' json ' модуль.
- Ініціалізуйте рядкову змінну ‘test_string’ зі словником у форматі рядка.
- Надрукуйте оригінальний рядок за допомогою функції print() і об’єднайте його зі змінною test_string, перетвореною на рядок за допомогою функції str().
- Використовуйте функцію «json.loads()», щоб перетворити рядок словника на об’єкт словника та призначити його змінній «res».
- Надрукуйте перетворений словник за допомогою функції print() і об’єднайте його зі змінною res, перетвореною на рядок за допомогою функції str().
Python3
як перетворити char на рядок
# 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))> |
>
>Вихід:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Часова складність: O(1), оскільки це єдиний виклик функції для json.loads, який приймає рядок як вхідні дані та повертає словник.
Допоміжні приміщення: O(n), де n - довжина вхідного рядка. Це тому, що повернутий словник займає простір, пропорційний довжині вхідного рядка.
Використання ast.literal_eval() щоб перетворити рядковий словник на словник
Наведений вище метод також можна використовувати для виконання подібного перетворення. Функція безпечніша за функцію eval і може використовуватися для взаємоперетворення всіх типів даних, крім словника.
кроки:
- Програма імпортує модуль ast.
- Програма ініціалізує рядкову змінну test_string рядковим представленням словника: {Nikhil : 1, Akshat : 2, Akash : 3}.
- Програма друкує оригінальний рядок за допомогою функції print() і str(), щоб перетворити змінну test_string на рядок: print(Оригінальний рядок: + str(test_string)).
- Програма використовує функцію ast.literal_eval() для перетворення рядкового представлення словника в словник Python: res = ast.literal_eval(test_string).
- Програма друкує отриманий словник за допомогою функції print() і str(), щоб перетворити змінну res на рядок: print(Перетворений словник : + 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))> |
>
>Вихід:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Часова складність: O(n), де n – кількість символів у рядку словника.
Допоміжні приміщення: O(n), де n – кількість елементів у рядку словника.
Перетворення рядкового словника на словник за допомогою eval()
Наведений вище метод також можна використовувати для виконання подібного перетворення. Функція eval() аналізує переданий аргумент, перетворює його на вираз Python і запускає вираз 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))> |
>
>
Вихід:
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Часова складність: О(1)
Допоміжний простір: О(1)
Перетворення рядкового словника на словник за допомогою методу split() і розуміння словника
Спочатку ми видаляємо фігурні дужки з рядка за допомогою методу strip(). Потім ми розбиваємо рядок на список пар ключ-значення за допомогою методу split(). Нарешті, ми використовуємо розуміння словника, щоб перебирати пари, розділяти їх на окремі рядки ключів і значень і перетворювати значення на цілі числа перед додаванням їх до словника. Отриманий словник повертається.
цифри для алфавіту
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}> |
>
>Вихід
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Часова складність: O(n), де n – кількість пар ключ-значення в словнику.
Допоміжні приміщення: O(n)
Перетворення рядкового словника на словник за допомогою функції eval() разом із функцією replace().
- Ініціалізувати рядок, що містить словник у форматі рядка.
- Використовувати замінити() замінює всі одинарні лапки (‘) у рядку подвійними лапками ().
- Використовувати eval() функція для оцінки результуючого рядка як виразу Python, який буде об’єктом словника.
- Призначте отриманий словник змінній.
Python3
основна мова java
# 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))> |
>
>Вихід
The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}> Часова складність: O(n), де n - довжина вхідного рядка. Це тому, що функція replace() має часову складність O(n).
Допоміжні приміщення: O(n), де n - довжина вхідного рядка.