有時,在使用字典時,我們可能會遇到一個問題,需要將字符串轉換為嵌套字典,每個分隔符的出現都意味著一個新的嵌套。這是一個特殊問題,但可能會發生在數據域和日常編程中。讓我們討論一下完成這項任務的具體方式。
方法:使用循環+遞歸這是執行此任務的方式。在此,當遇到分隔符時,我們會重複字典的嵌套。
Python3# Python3 code to demonstrate working of
# Convert String to Nested Dictionaries
# Using loop
def helper_fnc(test_str, sep):
if sep not in test_str:
return test_str
key, val = test_str.split(sep, 1)
return {key: helper_fnc(val, sep)}
# initializing string
test_str = 'gfg_is_best_for_geeks'
# printing original string
print("The original string is : " + str(test_str))
# initializing separator
sep = '_'
# Convert String to Nested Dictionaries
# Using loop
res = helper_fnc(test_str, sep)
# printing result
print("The nested dictionary is : " + str(res))
輸出
The original string is : gfg_is_best_for_geeks The nested dictionary is : {'gfg': {'is': {'best': {'for': 'geeks'}}}}
使用堆棧:
方法:
我們還可以使用堆棧將字符串轉換為嵌套字典。我們將把字符串分割成一個鍵列表,並使用堆棧來跟蹤當前的字典。我們將遍曆鍵列表並將每個鍵壓入堆棧。如果下一個鍵是最後一個鍵,我們會將當前字典的值設置為最後一個鍵。否則,我們將創建一個新字典並將當前字典的值設置為新字典。然後我們將新字典壓入堆棧並使其成為當前字典。
Python3def convert_to_dict(string):
keys = string.split('_')
stack = []
current_dict = {}
for key in keys:
if len(stack) == len(keys) - 1:
stack[-1][prev_key] = key
else:
new_dict = {}
current_dict[key] = new_dict
stack.append(current_dict)
current_dict = new_dict
prev_key = key
return stack[0]
string = 'gfg_is_best_for_geeks'
result = convert_to_dict(string)
print(result)
輸出
{'gfg': {'is': {'best': {'for': 'geeks'}}}}
時間複雜度:O(n)
輔助空間:O(n)
相關用法
- Python String轉Set用法及代碼示例
- Python String轉Long用法及代碼示例
- Python String轉Float用法及代碼示例
- Python String轉Binary用法及代碼示例
- Python String轉bytes用法及代碼示例
- Python String轉Tuple用法及代碼示例
- Python String format()用法及代碼示例
- Python String capitalize()用法及代碼示例
- Python String center()用法及代碼示例
- Python String casefold()用法及代碼示例
- Python String count()用法及代碼示例
- Python String endswith()用法及代碼示例
- Python String expandtabs()用法及代碼示例
- Python String encode()用法及代碼示例
- Python String find()用法及代碼示例
- Python String index()用法及代碼示例
- Python String isalnum()用法及代碼示例
- Python String isalpha()用法及代碼示例
- Python String isdecimal()用法及代碼示例
- Python String isdigit()用法及代碼示例
- Python String isidentifier()用法及代碼示例
- Python String islower()用法及代碼示例
- Python String isnumeric()用法及代碼示例
- Python String isprintable()用法及代碼示例
- Python String isspace()用法及代碼示例
注:本文由純淨天空篩選整理自manjeet_04大神的英文原創作品 Python – Convert String to Nested Dictionaries。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。