当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。