當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python String轉Nested Dictionaries用法及代碼示例


有時,在使用字典時,我們可能會遇到一個問題,需要將字符串轉換為嵌套字典,每個分隔符的出現都意味著一個新的嵌套。這是一個特殊問題,但可能會發生在數據域和日常編程中。讓我們討論一下完成這項任務的具體方式。

方法:使用循環+遞歸這是執行此任務的方式。在此,當遇到分隔符時,我們會重複字典的嵌套。

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'}}}}



使用堆棧:

方法:

我們還可以使用堆棧將字符串轉換為嵌套字典。我們將把字符串分割成一個鍵列表,並使用堆棧來跟蹤當前的字典。我們將遍曆鍵列表並將每個鍵壓入堆棧。如果下一個鍵是最後一個鍵,我們會將當前字典的值設置為最後一個鍵。否則,我們將創建一個新字典並將當前字典的值設置為新字典。然後我們將新字典壓入堆棧並使其成為當前字典。

Python3
def 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)


相關用法


注:本文由純淨天空篩選整理自manjeet_04大神的英文原創作品 Python – Convert String to Nested Dictionaries。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。